@mixin top-nav-is-colored
  @at-root
    .topNavBarColor &, .topNavBarColor#{&}
      @content

.topNav
  position: fixed
  z-index: 4
  left: 0
  right: 0
  top: 0
  height: 60px
  line-height: 60px
  background-color: var(--card-bg-color)
  -webkit-box-shadow: 0px 2px 1px 0px var(--primary-shadow-color)
  display: flex
  align-items: center
  align-content: center

  @media only screen and (min-width: 961px)
    display: grid
    grid-template-columns: 1fr 440px 1fr

  @include top-nav-is-colored
    background-color: var(--primary-color)

.menuIcon // the hamburger button
  @media only screen and (max-width: 680px)
    display: none

.navIcon // all icons in the top navigation
  font-size: 20px
  padding: 10px
  cursor: pointer
  color: var(--primary-text-color)
  border-radius: 50%
  transition: background 0.2s ease-out
  width: 1em
  height: 1em

  &.fa-arrow-left, &.fa-arrow-right
    color: gray
    opacity: 0.5
    pointer-events: none
    user-select: none

  @include top-nav-is-colored
    color: var(--text-with-main-color)

    &:hover
      background-color: var(--primary-color-hover)

  &:hover
    background-color: var(--side-nav-hover-color)
    transition: background 0.2s ease-in

  &:active
    background-color: var(--tertiary-text-color)
    transition: background 0.2s ease-in

    @include top-nav-is-colored
      background-color: var(--primary-color-active)

.navFilterIcon // Filter icon
  $effect-distance: 10px

  margin-left: $effect-distance

  &.filterChanged // When filter value changed from default
    box-shadow: 0 0 $effect-distance var(--primary-color)

    @include top-nav-is-colored
      box-shadow: 0 0 $effect-distance var(--text-with-main-color)

.side // parts of the top nav either side of the search bar
  display: flex
  align-items: center

  &.profiles
    justify-content: flex-end

  .navSearchIcon
    @media only screen and (min-width: 681px)
      display: none

  .navNewWindowIcon
    @media only screen and (max-width: 680px)
      display: none

  .logo // parts that make up the logo
    display: flex
    align-items: center
    padding: 0px 25px 0px 10px
    cursor: pointer

    &:active
      background-color: var(--tertiary-text-color)
      transition: background 0.2s ease-in
      @include top-nav-is-colored
        background-color: var(--primary-color-active)
    .logoIcon
      background-image: var(--logo-icon)
      background-repeat: no-repeat
      background-position: right top
      background-size: 25px
      width: 25px
      height: 25px

      @include top-nav-is-colored
        background-image: var(--logo-icon-bar-color)

    .logoText
      margin-left: 5px
      position: relative
      top: -3px
      background-image: var(--logo-text)
      background-repeat: no-repeat
      background-position: right top
      background-size: 100px
      width: 100px
      height: 40px

      @media only screen and (max-width: 680px)
        display: none

      @include top-nav-is-colored
        background-image: var(--logo-text-bar-color)

.middle // the middle part of the top nav which contains the search bar
  max-width: 440px
  flex: 1

  .searchContainer
    display: flex
    align-items: center

    @media only screen and (max-width: 680px)
      position: fixed
      left: 0
      right: 0
      top: 60px
      background-color: var(--side-nav-color)

      @include top-nav-is-colored
        background-color: var(--primary-color-hover)

    .searchInput
      flex: 1

  .searchFilters
    position: absolute
    left: 0
    right: 0
    margin: 10px 20px 20px 220px
    transition: margin 150ms ease-in-out

    @media only screen and (max-width: 680px)
      left: 0
      right: 0
      margin: 95px 10px 0px

    @media only screen and (min-width: 681px)
      &.expand
        margin-left: 100px
