body > header {
  background: $gray;

  #content {
    display: flex;
    align-content: center;
    justify-content: space-between;
  }

  nav#menu {
    position: relative;
    display: none;
    appearance: none;
    transform: skewX(-15deg);
    left: -1em;
    padding: 1em 1em 1em 2em;
    background: $primary;
    align-self: flex-start;

    a {
      transform: skewX(15deg);
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      width: 1.4em;
      height: 1.4em;
      margin: 0;
      padding: 0;
      color: $gray;
      font-size: 1.33em;
    }
  }

  nav {
    display: flex;
    flex-direction: row;
    align-items: center;

    hr {
      height: 100%;
      width: 0.2em;
      background: $primary;
      border: none;
      transform: skewX(-15deg);
    }
    a {
      display: flex;
      align-items: center;
      position: relative;
      align-self: stretch;
      margin: 0;
      padding: 0 2em;
      font-size: 1em;

      i { font-size: 1.2em; }

      &.title {
        margin: 0;
        text-align: center;
        padding: 0.5em 1em;
        font-size: 1.75em;

        img {
          height: 1.75em;
          width: 1.75em;
        }

        p {
          margin: 0;
          padding-left: 0.5em;
        }
      }
    }
  }
}

.messages {
  & > * {
    padding: 1em 20%;
    margin: 0;
    max-width: initial;
    font-weight: bold;
  }

  p.error {
    color: darken($red, 20%);
    background: lighten($red, 40%);
    margin: 0;
    max-width: initial;
  }

  p.warning {
    color: darken($yellow, 20%);
    background: lighten($yellow, 40%);
  }

  p.success {
    color: darken($success-color, 20%);
    background: lighten($success-color, 40%);
  }
}

/// Small screens
@media screen and (max-width: 600px) {
  @keyframes menuOpening {
    from {
      transform: scaleX(0);
      transform-origin: left;
      opacity: 0;
    }
    to {
      transform: scaleX(1);
      transform-origin: left;
      opacity: 1;
    }
  }
  @-webkit-keyframes menuOpening {
    from {
      -webkit-transform: scaleX(0);
      transform-origin: left;
      opacity: 0;
    }
    to {
      -webkit-transform: scaleX(1);
      transform-origin: left;
      opacity: 1;
    }
  }

  body > header {
    flex-direction: column;

    nav#menu {
      display: inline-flex;
      z-index: 21;
    }

    #content {
      display: none;
      appearance: none;
      text-align: center;
      z-index: 20;
    }
  }

  body > header:focus-within #content, .show + #content {
    position: fixed;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;

    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    box-sizing: border-box;

    animation: 0.2s menuOpening;

    &::before {
      content: "";
      position: absolute;
      transform: skewX(-10deg);
      top: 0;
      left: -20%;
      width: 100%;
      height: 100%;

      z-index: -10;

      background: $primary;
    }

    > nav {
      flex-direction: column;
      align-items: flex-start;

      a {
        display: flex;
        flex-direction: row;
        align-items: center;
        margin: 0;
        padding: 1rem 1.5rem;
        color: $background;
        font-size: 1.4em;
        font-weight: 300;

        &.title { font-size: 1.8em; }

        > *:first-child { width: 3rem; }
        > img:first-child { height: 3rem; }
        > *:last-child { margin-left: 1rem; }
        > nav hr {
          display: block;
          margin: 0;
          width: 100%;
          border: solid $background 0.1rem;
        }
        .mobile-label { display: initial; }
      }
    }
  }
}

/* Only enable label animations on large screens */
@media screen and (min-width: 600px) {
  header nav a {
    i {
      transition: all 0.2s ease;
      margin: 0;
    }

    .mobile-label {
      transition: all 0.2s ease;
      display: block;
      position: absolute;
      left: 50%;
      transform: translateZ(0);
      opacity: 0;
      font-size: 0.9em;
      white-space: nowrap;
    }

    img + .mobile-label { display: none; }

    &:hover {
      i { margin-bottom: 0.75em; }
      .mobile-label {
        opacity: 1;
        transform: translate(-50%, 80%);
      }
    }
  }
}

// Small screens
@media screen and (max-width: 600px) {
  @keyframes menuOpening {
    from {
      transform: scaleX(0);
      transform-origin: left;
      opacity: 0;
    }
    to {
      transform: scaleX(1);
      transform-origin: left;
      opacity: 1;
    }
  }
  @-webkit-keyframes menuOpening {
    from {
      -webkit-transform: scaleX(0);
      transform-origin: left;
      opacity: 0;
    }
    to {
      -webkit-transform: scaleX(1);
      transform-origin: left;
      opacity: 1;
    }
  }

  body > header {
    flex-direction: column;

    nav#menu {
      display: inline-flex;
      z-index: 21;
    }

    #content {
      display: none;
      appearance: none;
      text-align: center;
      z-index: 20;
    }
  }

  body > header:focus-within #content, .show + #content {
    position: fixed;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;

    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    box-sizing: border-box;

    animation: 0.2s menuOpening;

    &::before {
      content: "";
      position: absolute;
      transform: skewX(-10deg);
      top: 0;
      left: -20%;
      width: 100%;
      height: 100%;

      z-index: -10;

      background: $primary;
    }

    > nav {
      flex-direction: column;
      align-items: flex-start;

      a {
        display: flex;
        flex-direction: row;
        align-items: center;
        margin: 0;
        padding: 1rem 1.5rem;
        color: $background;
        font-size: 1.4em;
        font-weight: 300;

        &.title { font-size: 1.8em; }

        > *:first-child { width: 3rem; }
        > img:first-child { height: 3rem; }
        > *:last-child { margin-left: 1rem; }
        > nav hr {
          display: block;
          margin: 0;
          width: 100%;
          border: solid $background 0.1rem;
        }
        .mobile-label { display: initial; }
      }
    }
  }
}