@font-face {
  font-family: Suse_light;
  src: url("../font/SUSE-Light.ttf");
}

@font-face {
  font-family: Suse_semi_bold;
  src: url("../font/SUSE-SemiBold.ttf");
}

body {
  background: radial-gradient(circle,
  var(--color-background-body-first) 95%,
  var(--color-background-body-second) 100%
  );
}

p {
  font-size: var(--font-size-base);
  line-height: var(--line-height-text);
  margin: 0%;
}

h2, h3, h4, p, a {
  font-family: Suse_light, serif;
  color: var(--color-primary);
}

.text {
  width: 100%;
}

.hidden {
  opacity: 0;
}

/* Mobile */
@media only screen and (max-width: 767px) {

  .logo {
    height: auto;
    width: 33vw;
    position: relative;
    padding-top: 9%;
  }

  .banner {
    display: flex;
    justify-content: space-between;
  }

  .contact_wrapper {
    padding-left: 9%;
    margin-top: -2%;
  }

  .container {
    padding: 5%;
  }

  .content {
    margin-top: -40%;
  }

  .impressum {
    padding-top: 9%;
  }

  .impressum_headline {
    font-size: calc(var(--font-size-headline_four) - var(--mobile-factor));
    color: var(--color-text-passive);
  }

  .impressum_content {
    color: var(--color-text-passive);
    font-size: calc(var(--font-size-base) - var(--mobile-factor));
  }

  .text {
    opacity: 1;
    text-align: justify;
    padding-top: 20%;
  }

  p {
    line-height: var(--line-height-text-mobile);
    font-size: calc(var(--font-size-base) - var(--mobile-factor));
  }

}

/* Tablet */
@media only screen and (min-width: 768px) {

  h2, h3, h4, a {
    font-size: var(--font-size-base);
    font-family: Suse_semi_bold, serif;
    color: var(--color-primary);
    padding: 1rem 0;
    text-align: left;
    cursor: pointer;
  }

  p {
    font-size: calc(var(--font-size-base) - var(--tablet-factor));
    line-height: var(--line-height-text);
    color: var(--color-primary);
    margin: 0%;
  }

  .contact {
    font-size: var(--font-size-base);
  }

  .contact_content_wrapper {
    margin-top: 0%;
  }

  .container {
    display: grid;
    height: 97vh;
    grid-template-columns: 0.5fr 1fr 0.5fr 6fr 1fr 0.5fr;
    grid-template-rows: 0.5fr 5fr 2.5fr 0.5fr;
    grid-auto-flow: row;
    grid-template-areas:
    ". banner . background_image background_image ."
    ". banner . background_image background_image ."
    ". . . background_image background_image ."
    ". . . . . .";
  }

  .banner {
    grid-area: banner;
    width: 100%;
    height: 100%;
    margin-top: 33%;
  }

  .logo {
    width: 20vw;
    position: relative;
    top: 0;
  }

  .background_image {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr 1fr;
    grid-template-rows: 0.5fr 6fr;
    grid-auto-flow: row;
    grid-template-areas:
    "nav nav nav ."
    "content content content content";
    grid-area: background_image;
    width: 100%;
    height: 100%;
    padding-left: 2%;
    background-image: url("../images/01_1.webp");
    background-repeat: no-repeat;
    background-position: center right;
    background-size: auto;
    padding-top: 2rem;
    position: relative;
  }

  .nav {
    grid-area: nav;
    display: grid;
    grid-template-columns: 1fr;
    grid-template-rows: 1fr 1fr 1fr;
    grid-auto-flow: row;
    grid-template-areas:
    "offer"
    "tradition"
    "founder";
  }

  .offer {
    grid-area: offer;
  }

  .tradition {
    grid-area: tradition;
  }

  .founder {
    grid-area: founder;
  }

  .content {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr 1fr;
    grid-template-rows: 1.6fr 2fr;
    gap: 10px 10px;
    grid-auto-flow: row;
    grid-template-areas:
    ". . . . "
    "text_one text_one text_one .";
    grid-area: content;
    width: 100%;
    height: 100%;
  }

  .text {
    grid-area: text_one;
    width: 100%;
    flex-grow: 1;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
  }

  .text {
    opacity: 0;
    visibility: hidden;
    position: relative;
    transition: opacity 1.25s ease, visibility 1.25s ease;
    width: 100%;
  }

  .text.active {
    opacity: 1;
    visibility: visible;
    position: absolute;
    padding-top: 22%;
  }

  .nav-item {
    position: relative;
    display: inline-block;
    transition: color 1.25s ease;
    padding-top: 5%;
    margin-bottom: -5%;
  }

  .nav-item::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: -0.2rem;
    width: 0%;
    height: 2px;
    background-color: var(--color-primary);
    transition: width 1.25s ease;
  }

  .impressum_headline {
    font-size: calc(var(--font-size-headline_four) - var(--mobile-factor));
    opacity: var(--opacity-impressum);
  }

  .impressum_content {
    opacity: var(--opacity-impressum);
    font-size: calc(var(--font-size-base) - var(--mobile-factor));
  }

}

/* Desktop */
@media only screen and (min-width: 1280px) {
  body {
    margin: 0;
    max-height: 100vh;
    max-width: 99vw;
    background: radial-gradient(
      circle,
      var(--color-background-body-first) 95%,
      var(--color-background-body-second) 100%
    );
    color: var(--color-primary);
    font-size: var(--font-size-base);
    font-family: Suse_light, serif;
    line-height: var(--line-height-text);
  }

  h2, h3, h4, a {
    font-size: var(--font-size-base);
    font-family: Suse_semi_bold, serif;
    color: var(--color-primary);
    padding: 1rem 0;
    text-align: left;
    cursor: pointer;
  }

  p {
    font-size: var(--font-size-base);
    line-height: var(--line-height-text);
    color: var(--color-primary);
    margin: 0%;
  }

  .contact {
    font-size: var(--font-size-base);
  }

  .contact_content_wrapper {
    margin-top: 0;
  }

  .container {
    display: grid;
    height: 97vh;
    grid-template-columns: 0.5fr 1fr 0.5fr 6fr 1fr 0.5fr;
    grid-template-rows: 0.5fr 5fr 2.5fr 0.5fr;
    grid-auto-flow: row;
    grid-template-areas:
    ". banner . background_image background_image ."
    ". banner . background_image background_image ."
    ". . . background_image background_image ."
    ". . . . . .";
  }

  .banner {
    grid-area: banner;
    width: 100%;
    height: 100%;
    margin-top: 33%;
  }

  .logo {
    width: 15vw;
    position: relative;
    margin-top: -10%;
  }

  .background_image {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr 1fr;
    grid-template-rows: 0.5fr 6fr;
    grid-auto-flow: row;
    grid-template-areas:
    "nav nav nav ."
    "content content content content";
    grid-area: background_image;
    width: 100%;
    height: 100%;
    background-image: url("../images/01_1.webp");
    background-repeat: no-repeat;
    background-position: center right;
    background-size: auto;
    padding-top: 2rem;
    position: relative;
  }

  .nav {
    grid-area: nav;
    display: grid;
    grid-template-columns: 1fr 1fr 1fr 1fr;
    grid-template-rows: 1fr;
    grid-auto-flow: row;
    grid-template-areas:
    "offer tradition founder .";
  }

  .offer {
    grid-area: offer;
  }

  .tradition {
    grid-area: tradition;
  }

  .founder {
    grid-area: founder;
  }

  .content {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr 1fr;
    grid-template-rows: 1.6fr 2fr;
    gap: 10px 10px;
    grid-auto-flow: row;
    grid-template-areas:
    ". . . . "
    "text_one text_one text_one .";
    grid-area: content;
    width: 100%;
    height: 100%;
  }

  .text {
    grid-area: text_one;
    width: 100%;
    flex-grow: 1;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
  }

  .text {
    opacity: 0;
    visibility: hidden;
    position: relative;
    transition: opacity 1.25s ease, visibility 1.25s ease;
    width: 100%;
  }

  .text.active {
    opacity: 1;
    visibility: visible;
    position: absolute;
    padding-top: 20%;
  }

  /* Nav-Item Hover-Underline */
  .nav-item {
    position: relative;
    display: inline-block;
    transition: color 1.25s ease;
  }

  .nav-item::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: -0.2rem;
    width: 0%;
    height: 2px;
    transition: width 1.25s ease;
  }

  .nav-item:hover::after,
  .nav-item.active::after {
    width: 80%;
  }

  .impressum_headline {
    font-size: calc(var(--font-size-headline_four) - var(--mobile-factor));
    opacity: var(--opacity-impressum);
  }

  .impressum_content {
    opacity: var(--opacity-impressum);
    font-size: calc(var(--font-size-base) - var(--mobile-factor));
  }

}