/* ==========================================================================
   Togglemenu push.
   ========================================================================== */
body {
  overflow-x: hidden;

  .page {
    transition: .3s;
  }

  &.is-togglemenu-open {
    .page {
      position: fixed;
      width: 100vw;
      transform: translateX(var(--menu-push-width-open));
    }

    .togglemenu--push {
      transform: translateX(0);
      box-shadow: -5px 0 24px rgba(0, 0, 0, .24);
    }
  }
}

.togglemenu--push {
  position: absolute;
  z-index: 50;
  top: 0;
  left: 0;
  width: var(--menu-push-width-open);
  height: 100vh;
  background: #fff;
  overflow: auto;
  overflow-x: hidden;
  transform: translateX(-100%);
  font-family: var(--font-family-secondary-medium);
  font-size: var(--font-size-l);
  transition: transform .3s;
  box-sizing: border-box;

  .toolbar-vertical &,
  .toolbar-fixed & {
    margin-top: 39px;
  }

  .toolbar-fixed.toolbar-horizontal.toolbar-tray-open & {
    margin-top: 78px;
  }

  .nav-menu {
    margin: 0;
    padding: 0;
    overflow: hidden;
  }

  li {
    list-style: none;

    a {
      position: relative;
      display: block;
      padding: 16px 20px;
      border-bottom: 1px solid rgba(0, 0, 0, .1);
      line-height: 1.3;
      color: var(--color-text-dark);
    }
  }

  .is-parent {
    > a {
      padding-right: 40px;
    }
  }

  /* Close.
     ========================================================================== */

  .l-panel .item-back,
  .togglemenu-close {
    button {
      position: relative;
      display: inline-block;
      padding: 0;
      width: 44px;
      height: 44px;
      color: #fff;
      background: var(--color-fg-primary);
      text-indent: -9999px;
      border: 0;
      cursor: pointer;
      transition: background-color .3s;

      &:before,
      &:after {
        content: "";
        position: absolute;
        top: 50%;
        left: 50%;
        width: 40%;
        height: 2px;
        background-color: #fff;
        transform: rotate(45deg) translate(-50%, -50%);
        transform-origin: 0 0;
      }

      &:after {
        transform: rotate(-45deg) translate(-50%, -50%);
      }
    }
  }

  /* Layout accordion.
     ========================================================================== */

  .l-accordion {
    > .nav-menu {
      padding-left: 20px;
      overflow: hidden;

      > .nav-item {
        > a {
          padding-top: 10px;
          padding-bottom: 10px;
        }

        &:last-of-type {
          padding-bottom: 10px;
        }

        + .nav-item > a {
          border: 0;
        }
      }
    }

    > a {
      &:before,
      &:after {
        content: "";
        position: absolute;
        bottom: 48%;
        right: 20px;
        width: 10px;
        height: 2px;
        background: var(--color-fg-primary);
        transform: rotate(45deg);
        transform-origin: center -3px;
        transition: .3s;
      }

      &:after {
        transform: rotate(-45deg);
      }
    }

    &.is-active {
      > .nav-menu {
        z-index: 50;
        overflow: visible;
      }

      > a {
        &:before,
        &:after {
          transform-origin: center 5px;
        }
      }
    }
  }

  /* Layout panel.
     ========================================================================== */

  .l-panel {
    > a {
      &:before,
      &:after {
        content: "";
        position: absolute;
        bottom: 48%;
        right: 20px;
        width: 10px;
        height: 2px;
        background: var(--color-fg-primary);
        transform: rotate(45deg);
        transform-origin: right center;
        transition: .3s;
      }

      &:after {
        transform: rotate(-45deg);
      }
    }

    > .nav-menu {
      position: absolute;
      top: 0;
      left: 0;
      z-index: 55;
      width: var(--menu-push-width-open);
      height: 100%;
      background: #fff;
      transform: translateX(-100%);
      transition: transform .3s;
    }

    &.is-active {
      > .nav-menu {
        transform: translateX(0);
      }
    }

    /* Header submenu.
       ========================================================================== */

    .item-back {
      .item-btn {
        margin-top: 15px;
        margin-left: 6px;
        flex-shrink: 0;
        text-indent: 0;
        opacity: .7;

        &:before,
        &:after {
          width: 20%;
          transform-origin: -46% 0;
        }

        span {
          margin-left: 100%;
          text-transform: uppercase;
        }

        &:hover,
        &:focus {
          opacity: 1;
        }
      }

      .item-title {
        &,
        a {
          color: #fff;
        }

        a {
          padding-top: 5px;
          font-size: 1.1em;
        }
      }
    }
  }

  .togglemenu-menu {
    a {
      &:hover,
      &:focus {
        color: var(--color-fg-primary);
        background-color: var(--color-bg-primary);
      }
    }

    .l-dashboard {
      > a {
        color: var(--color-fg-primary);
      }

      .level-2 {
        a > span {
          display: inline-flex;
          align-items: center;
        }

        .icon {
          margin-top: 2px;
          margin-right: .75em;
          flex-shrink: 0;
          color: var(--color-fg-primary);
        }
      }
    }
  }

  .togglemenu-close {
    button {
      position: absolute;
      top: 0;
      right: 0;
      background-color: transparent;

      &:before,
      &:after {
        background-color: var(--color-text);
      }
    }
  }

  .togglemenu-logo {
    padding: 0 20px;
    height: 70px;
    border-bottom: 1px solid  var(--color-fg-primary);

    img {
      margin-top: 15px;
      height: 40px;
    }
  }

  .togglemenu-menu-footer {
    margin-top: 30px;
    @include font(secondary);
    font-size: var(--font-size-m);

    li {
      a {
        padding-top: 6px;
        padding-bottom: 6px;
        border: 0;

        &:hover,
        &:focus {
          color: var(--color-fg-primary);
        }
      }
    }
  }
}

/* States.
   ========================================================================== */
.is-togglemenu-submenu-open {
  .togglemenu--push {
    overflow: hidden;

    .l-panel > .nav-menu {
      overflow-y: auto;
    }
  }
}
