$navbar-background-color: v("scheme-main") !default
$navbar-box-shadow-size: 0 2px 0 0 !default
$navbar-box-shadow-color: v("background") !default
$navbar-height: 3.25rem !default
$navbar-padding-vertical: 1rem !default
$navbar-padding-horizontal: 2rem !default
$navbar-z: 30 !default
$navbar-fixed-z: 30 !default

$navbar-item-color: v("text") !default
$navbar-item-hover-color: v("link") !default
$navbar-item-hover-background-color: v("scheme-main-bis") !default
$navbar-item-active-color: v("scheme-invert") !default
$navbar-item-active-background-color: transparent !default
$navbar-item-img-max-height: 1.75rem !default

+register(navbar-item-color,$navbar-item-color, true)

$navbar-burger-color: v("navbar-item-color") !default

$navbar-tab-hover-background-color: transparent !default
$navbar-tab-hover-border-bottom-color: v("link") !default
$navbar-tab-active-color: v("link") !default
$navbar-tab-active-background-color: transparent !default
$navbar-tab-active-border-bottom-color: v("link") !default
$navbar-tab-active-border-bottom-style: solid !default
$navbar-tab-active-border-bottom-width: 3px !default

$navbar-dropdown-background-color: v("scheme-main") !default
$navbar-dropdown-border-top: 2px solid v("border") !default
$navbar-dropdown-offset: -4px !default
$navbar-dropdown-arrow: v("link") !default
$navbar-dropdown-radius: v("radius-large") !default
$navbar-dropdown-z: 20 !default

$navbar-dropdown-boxed-radius: v("radius-large") !default
$navbar-dropdown-boxed-shadow: 0 8px 8px vAlphaChange("scheme-invert", 0.1), 0 0 0 1px vAlphaChange("scheme-invert", 0.1) !default

$navbar-dropdown-item-hover-color: v("scheme-invert") !default
$navbar-dropdown-item-hover-background-color: v("background") !default
$navbar-dropdown-item-active-color: v("link") !default
$navbar-dropdown-item-active-background-color: v("background") !default

$navbar-divider-background-color: v("background") !default
$navbar-divider-height: 2px !default

$navbar-bottom-box-shadow-size: 0 -2px 0 0 !default

$navbar-breakpoint: $desktop !default

+register(navbar-background-color,$navbar-background-color, true)
+register(navbar-height,$navbar-height, true)
+register(navbar-z,$navbar-z, true)
+register(navbar-box-shadow-size,$navbar-box-shadow-size, true)
+register(navbar-box-shadow-color,$navbar-box-shadow-color, true)
+register(navbar-fixed-z,$navbar-fixed-z, true)
+register(navbar-bottom-box-shadow-size,$navbar-bottom-box-shadow-size, true)
+register(navbar-burger-color,$navbar-burger-color, true)
+register(navbar-item-hover-background-color,$navbar-item-hover-background-color, true)
+register(navbar-item-hover-color,$navbar-item-hover-color, true)
+register(navbar-item-img-max-height,$navbar-item-img-max-height, true)
+register(navbar-tab-hover-background-color,$navbar-tab-hover-background-color, true)
+register(navbar-tab-hover-border-bottom-color,$navbar-tab-hover-border-bottom-color, true)
+register(navbar-tab-active-background-color,$navbar-tab-active-background-color, true)
+register(navbar-tab-active-border-bottom-color,$navbar-tab-active-border-bottom-color, true)
+register(navbar-tab-active-border-bottom-style,$navbar-tab-active-border-bottom-style, true)
+register(navbar-tab-active-border-bottom-width,$navbar-tab-active-border-bottom-width, true)
+register(navbar-tab-active-color,$navbar-tab-active-color, true)
+register(navbar-dropdown-arrow,$navbar-dropdown-arrow, true)
+register(navbar-divider-background-color,$navbar-divider-background-color, true)
+register(navbar-divider-height,$navbar-divider-height, true)
+register(navbar-padding-vertical,$navbar-padding-vertical, true)
+register(navbar-padding-horizontal,$navbar-padding-horizontal, true)
+register(navbar-dropdown-item-hover-background-color,$navbar-dropdown-item-hover-background-color, true)
+register(navbar-dropdown-item-hover-color,$navbar-dropdown-item-hover-color, true)
+register(navbar-dropdown-item-active-background-color,$navbar-dropdown-item-active-background-color, true)
+register(navbar-dropdown-item-active-color,$navbar-dropdown-item-active-color, true)
+register(navbar-dropdown-border-top,$navbar-dropdown-border-top, true)
+register(navbar-dropdown-radius,$navbar-dropdown-radius, true)
+register(navbar-dropdown-background-color,$navbar-dropdown-background-color, true)
+register(navbar-dropdown-z,$navbar-dropdown-z, true)
+register(navbar-dropdown-boxed-radius,$navbar-dropdown-boxed-radius, true)
+register(navbar-dropdown-boxed-shadow,$navbar-dropdown-boxed-shadow, true)
+register(navbar-dropdown-offset,$navbar-dropdown-offset, true)
+register(navbar-item-active-color,$navbar-item-active-color, true)
+register(navbar-item-active-background-color,$navbar-item-active-background-color, true)

=navbar-fixed
  left: 0
  position: fixed
  right: 0
  z-index: v("navbar-fixed-z")

.navbar
  background-color: v("navbar-background-color")
  min-height: v("navbar-height")
  position: relative
  z-index: v("navbar-z")
  @each $name in $colors-list
    $color: v($name)
    $color-invert: v($name+"-invert")
    &.is-#{$name}
      background-color: $color
      color: $color-invert
      .navbar-brand
        & > .navbar-item,
        .navbar-link
          color: $color-invert
        & > a.navbar-item,
        .navbar-link
          &:focus,
          &:hover,
          &.is-active
            background-color: vDarken($name,  5%)
            color: $color-invert
        .navbar-link
          &::after
            border-color: $color-invert
      .navbar-burger
        color: $color-invert
      +from($navbar-breakpoint)
        .navbar-start,
        .navbar-end
          & > .navbar-item,
          .navbar-link
            color: v($name+'-invert')
          & > a.navbar-item,
          .navbar-link
            &:focus,
            &:hover,
            &.is-active
              background-color: vDarken($name,  5%)
              color: v($name+'-invert')
          .navbar-link
            &::after
              border-color: v($name+'-invert')
        .navbar-item.has-dropdown:focus .navbar-link,
        .navbar-item.has-dropdown:hover .navbar-link,
        .navbar-item.has-dropdown.is-active .navbar-link
          background-color: vDarken($name,  5%)
          color: v($name+'-invert')
        .navbar-dropdown
          a.navbar-item
            &.is-active
              background-color: v($name)
              color: v($name+'-invert')
  & > .container
    align-items: stretch
    display: flex
    min-height: v("navbar-height")
    width: 100%
  &.has-shadow
    box-shadow: v("navbar-box-shadow-size") v("navbar-box-shadow-color")
  &.is-fixed-bottom,
  &.is-fixed-top
    +navbar-fixed
  &.is-fixed-bottom
    bottom: 0
    &.has-shadow
      box-shadow: v("navbar-bottom-box-shadow-size") v("navbar-box-shadow-color")
  &.is-fixed-top
    top: 0

html,
body
  &.has-navbar-fixed-top
    padding-top: v("navbar-height")
  &.has-navbar-fixed-bottom
    padding-bottom: v("navbar-height")

.navbar-brand,
.navbar-tabs
  align-items: stretch
  display: flex
  flex-shrink: 0
  min-height: v("navbar-height")

.navbar-brand
  a.navbar-item
    &:focus,
    &:hover
      background-color: transparent

.navbar-tabs
  +overflow-touch
  max-width: 100vw
  overflow-x: auto
  overflow-y: hidden

.navbar-burger
  color: v("navbar-burger-color")
  +hamburger(v("navbar-height"))
  +ltr-property("margin-left", auto)

.navbar-menu
  display: none

.navbar-item,
.navbar-link
  color: v("navbar-item-color")
  display: block
  line-height: 1.5
  padding: 0.5rem 0.75rem
  position: relative
  .icon
    &:only-child
      margin-left: -0.25rem
      margin-right: -0.25rem

a.navbar-item,
.navbar-link
  cursor: pointer
  &:focus,
  &:focus-within,
  &:hover,
  &.is-active
    background-color: v("navbar-item-hover-background-color")
    color: v("navbar-item-hover-color")

.navbar-item
  flex-grow: 0
  flex-shrink: 0
  img
    max-height: v("navbar-item-img-max-height")
  &.has-dropdown
    padding: 0
  &.is-expanded
    flex-grow: 1
    flex-shrink: 1
  &.is-tab
    border-bottom: 1px solid transparent
    min-height: v("navbar-height")
    padding-bottom: calc(0.5rem - 1px)
    &:focus,
    &:hover
      background-color: v("navbar-tab-hover-background-color")
      border-bottom-color: v("navbar-tab-hover-border-bottom-color")
    &.is-active
      background-color: v("navbar-tab-active-background-color")
      border-bottom-color: v("navbar-tab-active-border-bottom-color")
      border-bottom-style: v("navbar-tab-active-border-bottom-style")
      border-bottom-width: v("navbar-tab-active-border-bottom-width")
      color: v("navbar-tab-active-color")
      padding-bottom: calc(0.5rem - #{v("navbar-tab-active-border-bottom-width")})

.navbar-content
  flex-grow: 1
  flex-shrink: 1

.navbar-link:not(.is-arrowless)
  +ltr-property("padding-right", 2.5em)
  &::after
    @extend %arrow
    border-color: v("navbar-dropdown-arrow")
    margin-top: -0.375em
    +ltr-property("right", 1.125em)

.navbar-dropdown
  font-size: 0.875rem
  padding-bottom: 0.5rem
  padding-top: 0.5rem
  .navbar-item
    padding-left: 1.5rem
    padding-right: 1.5rem

.navbar-divider
  background-color: v("navbar-divider-background-color")
  border: none
  display: none
  height: v("navbar-divider-height")
  margin: 0.5rem 0

+until($navbar-breakpoint)
  .navbar > .container
    display: block
  .navbar-brand,
  .navbar-tabs
    .navbar-item
      align-items: center
      display: flex
  .navbar-link
    &::after
      display: none
  .navbar-menu
    background-color: v("navbar-background-color")
    box-shadow: 0 8px 16px vAlphaChange("scheme-invert", 0.1)
    padding: 0.5rem 0
    &.is-active
      display: block
  // Fixed navbar
  .navbar
    &.is-fixed-bottom-touch,
    &.is-fixed-top-touch
      +navbar-fixed
    &.is-fixed-bottom-touch
      bottom: 0
      &.has-shadow
        box-shadow: 0 -2px 3px vAlphaChange("scheme-invert", 0.1)
    &.is-fixed-top-touch
      top: 0
    &.is-fixed-top,
    &.is-fixed-top-touch
      .navbar-menu
        +overflow-touch
        max-height: calc(100vh - #{v("navbar-height")})
        overflow: auto
  html,
  body
    &.has-navbar-fixed-top-touch
      padding-top: v("navbar-height")
    &.has-navbar-fixed-bottom-touch
      padding-bottom: v("navbar-height")

+from($navbar-breakpoint)
  .navbar,
  .navbar-menu,
  .navbar-start,
  .navbar-end
    align-items: stretch
    display: flex
  .navbar
    min-height: v("navbar-height")
    &.is-spaced
      padding: v("navbar-padding-vertical") v("navbar-padding-horizontal")
      .navbar-start,
      .navbar-end
        align-items: center
      a.navbar-item,
      .navbar-link
        border-radius: v("radius")
    &.is-transparent
      a.navbar-item,
      .navbar-link
        &:focus,
        &:hover,
        &.is-active
          background-color: transparent !important
      .navbar-item.has-dropdown
        &.is-active,
        &.is-hoverable:focus,
        &.is-hoverable:focus-within,
        &.is-hoverable:hover
          .navbar-link
            background-color: transparent !important
      .navbar-dropdown
        a.navbar-item
          &:focus,
          &:hover
            background-color: v("navbar-dropdown-item-hover-background-color")
            color: v("navbar-dropdown-item-hover-color")
          &.is-active
            background-color: v("navbar-dropdown-item-active-background-color")
            color: v("navbar-dropdown-item-active-color")
  .navbar-burger
    display: none
  .navbar-item,
  .navbar-link
    align-items: center
    display: flex
  .navbar-item
    &.has-dropdown
      align-items: stretch
    &.has-dropdown-up
      .navbar-link::after
        transform: rotate(135deg) translate(0.25em, -0.25em)
      .navbar-dropdown
        border-bottom: v("navbar-dropdown-border-top")
        border-radius: v("navbar-dropdown-radius") v("navbar-dropdown-radius") 0 0
        border-top: none
        bottom: 100%
        box-shadow: 0 -8px 8px vAlphaChange("scheme-invert", 0.1)
        top: auto
    &.is-active,
    &.is-hoverable:focus,
    &.is-hoverable:focus-within,
    &.is-hoverable:hover
      .navbar-dropdown
        display: block
        .navbar.is-spaced &,
        &.is-boxed
          opacity: 1
          pointer-events: auto
          transform: translateY(0)
  .navbar-menu
    flex-grow: 1
    flex-shrink: 0
  .navbar-start
    justify-content: flex-start
    +ltr-property("margin-right", auto)
  .navbar-end
    justify-content: flex-end
    +ltr-property("margin-left", auto)
  .navbar-dropdown
    background-color: v("navbar-dropdown-background-color")
    border-bottom-left-radius: v("navbar-dropdown-radius")
    border-bottom-right-radius: v("navbar-dropdown-radius")
    border-top: v("navbar-dropdown-border-top")
    box-shadow: 0 8px 8px vAlphaChange("scheme-invert", 0.1)
    display: none
    font-size: 0.875rem
    +ltr-property("left", 0)
    min-width: 100%
    position: absolute
    top: 100%
    z-index: v("navbar-dropdown-z")
    .navbar-item
      padding: 0.375rem 1rem
      white-space: nowrap
    a.navbar-item
      +ltr-property("padding-right", 3rem)
      &:focus,
      &:hover
        background-color: v("navbar-dropdown-item-hover-background-color")
        color: v("navbar-dropdown-item-hover-color")
      &.is-active
        background-color: v("navbar-dropdown-item-active-background-color")
        color: v("navbar-dropdown-item-active-color")
    .navbar.is-spaced &,
    &.is-boxed
      border-radius: v("navbar-dropdown-boxed-radius")
      border-top: none
      box-shadow: v("navbar-dropdown-boxed-shadow")
      display: block
      opacity: 0
      pointer-events: none
      top: calc(100% + (#{v("navbar-dropdown-offset")}))
      transform: translateY(-5px)
      transition-duration: v("speed")
      transition-property: opacity, transform
    &.is-right
      left: auto
      right: 0
  .navbar-divider
    display: block
  .navbar > .container,
  .container > .navbar
    .navbar-brand
      +ltr-property("margin-left", -.75rem)
    .navbar-menu
      +ltr-property("margin-right", -.75rem)
  // Fixed navbar
  .navbar
    &.is-fixed-bottom-desktop,
    &.is-fixed-top-desktop
      +navbar-fixed
    &.is-fixed-bottom-desktop
      bottom: 0
      &.has-shadow
        box-shadow: 0 -2px 3px vAlphaChange("scheme-invert", 0.1)
    &.is-fixed-top-desktop
      top: 0
  html,
  body
    &.has-navbar-fixed-top-desktop
      padding-top: v("navbar-height")
    &.has-navbar-fixed-bottom-desktop
      padding-bottom: v("navbar-height")
    &.has-spaced-navbar-fixed-top
      padding-top: calc(#{v("navbar-height")} + #{v("navbar-padding-vertical")} * 2)
    &.has-spaced-navbar-fixed-bottom
      padding-bottom: calc(#{v("navbar-height")} + #{v("navbar-padding-vertical")} * 2)
  // Hover/Active states
  a.navbar-item,
  .navbar-link
    &.is-active
      color: v("navbar-item-active-color")
    &.is-active:not(:focus):not(:hover)
      background-color: v("navbar-item-active-background-color")
  .navbar-item.has-dropdown
    &:focus,
    &:hover,
    &.is-active
      .navbar-link
        background-color: v("navbar-item-hover-background-color")

// Combination

.hero
  &.is-fullheight-with-navbar
    min-height: calc(100vh - #{v("navbar-height")})
