.navbar.app-navbar {
  min-height: var(--header-height);
  margin: var(--spacing-small) auto var(--spacing);
  background-color: var(--color-surface);
  border: 0;
  border-radius: 0;
  border-bottom: 2px solid var(--color-ground);
}

.app-navbar .navbar-brand {
  height: var(--header-height);
  padding: var(--spacing-small) var(--spacing);
}

.app-navbar .navbar-brand img {
  height: var(--header-brand-height);
}

.app-navbar .navbar-collapse {
  border-top: 0;
  box-shadow: none;
}

.app-navbar .navbar-nav > li > a,
.app-navbar .nav-pills > li > a {
  padding: var(--spacing);
  font-size: var(--font-size-small);
  line-height: var(--line-height-small);
  color: var(--color-text);
  background-color: transparent;
  border-radius: 0;
}

.app-navbar .navbar-right > li > a {
  font-weight: 700;
}

.app-navbar .navbar-nav > li > a:hover,
.app-navbar .navbar-nav > li > a:focus,
.app-navbar .nav-pills > li > a:hover,
.app-navbar .nav-pills > li > a:focus,
.app-navbar .nav .open > a,
.app-navbar .nav .open > a:hover,
.app-navbar .nav .open > a:focus {
  color: var(--color-accent);
  background-color: transparent;
}

.app-navbar .navbar-nav > .active > a,
.app-navbar .navbar-nav > .active > a:hover,
.app-navbar .navbar-nav > .active > a:focus,
.app-navbar .nav-pills > .active > a,
.app-navbar .nav-pills > .active > a:hover,
.app-navbar .nav-pills > .active > a:focus {
  color: var(--color-accent);
  background-color: transparent;
  box-shadow: inset 0 -5px 0 var(--color-accent);
}

.app-navbar .nav-pills > li + li {
  margin-left: 0;
}

/* the page menu entries already have a non-breaking space after the icon */
.app-navbar .navbar-right .fa {
  margin-right: var(--spacing-small);
}

.app-navbar .navbar-toggle {
  margin: var(--spacing) var(--spacing) 0 0;
  background-color: transparent;
  border: 0;
  border-radius: 0;
}

.app-navbar .navbar-toggle:hover,
.app-navbar .navbar-toggle:focus {
  background-color: var(--color-ground);
}

.app-navbar .navbar-toggle .icon-bar {
  background-color: var(--color-text);
}

@media (min-width: 768px) {
  .app-navbar {
    --menu-entry-padding-x: var(--spacing-small);

    .nav.navbar-nav.navbar-right {
      float: none;
      margin: 0;
      position: absolute;
      top: 27px;
      right: 0;
    }
  }

  /* bootstrap only applies this for `.navbar > .container .navbar-brand` */
  .app-navbar .navbar-brand {
    margin-left: calc(-1 * var(--spacing));
  }

  /* two-tier header: the page menu gets its own row below logo and account items */
  .app-navbar .navbar-left {
    clear: both;
    /* align the first label with the logo: collapse padding + entry padding */
    margin-left: calc(-1 * var(--spacing) - var(--menu-entry-padding-x));
  }

  /* divider across the full header width, only when there are menu entries */
  .app-navbar .navbar-left:has(> .nav-pills > li)::before {
    content: "";
    /* override the bootstrap clearfix `display: table`, which would not stretch */
    display: block;
    position: absolute;
    left: 0;
    right: 0;
    height: 2px;
    background-color: var(--color-ground);
  }

  .app-navbar .navbar-left .nav-pills > li > a {
    padding: var(--spacing-small) var(--menu-entry-padding-x);
  }
}

@media (max-width: 767px) {
  .nav.navbar-nav.navbar-right {
    display: flex;
  }

  .app-navbar .navbar-collapse {
    position: absolute;
    z-index: 1030;
    left: 0;
    right: 0;
    margin: 0;
    background-color: var(--color-surface);
    border-top: 2px solid var(--color-ground);
    box-shadow: 0 9px 9px -6px rgba(0, 0, 0, 0.1);
  }

  .app-navbar .navbar-nav {
    margin: 0 calc(-1 * var(--spacing));
  }

  .app-navbar .navbar-nav > li > a,
  .app-navbar .nav-pills > li > a {
    padding: var(--spacing-small) var(--spacing);
  }

  .app-navbar .navbar-right > li + li {
    border-left: 2px solid var(--color-ground);
  }

  .app-navbar .nav-pills > li {
    float: none;
    border-top: 2px solid var(--color-ground);
  }

  .app-navbar .nav-pills > li:first-child {
    border-top-width: var(--spacing-small);
  }

  .app-navbar .navbar-toggle {
    position: absolute;
    right: 0;
  }
}
