/**
 * Dropdown ([role="list"])
 */

// Menu
details[role="list"],
li[role="list"] {
  position: relative;
}

details[role="list"] summary + ul,
li[role="list"] > ul {
  display: flex;
  z-index: 99;
  position: absolute;
  top: auto;
  right: 0;
  left: 0;
  flex-direction: column;
  margin: 0;
  padding: 0;
  border: var(--border-width) solid var(--dropdown-border-color);
  border-radius: var(--border-radius);
  border-top-right-radius: 0;
  border-top-left-radius: 0;
  background-color: var(--dropdown-background-color);
  box-shadow: var(--card-box-shadow);
  color: var(--dropdown-color);
  white-space: nowrap;

  li {
    width: 100%;
    margin-bottom: 0;
    padding: calc(var(--form-element-spacing-vertical) * 0.5)
      var(--form-element-spacing-horizontal);
    list-style: none;

    &:first-of-type {
      margin-top: calc(var(--form-element-spacing-vertical) * 0.5);
    }

    &:last-of-type {
      margin-bottom: calc(var(--form-element-spacing-vertical) * 0.5);
    }

    a {
      display: block;
      margin: calc(var(--form-element-spacing-vertical) * -0.5)
        calc(var(--form-element-spacing-horizontal) * -1);
      padding: calc(var(--form-element-spacing-vertical) * 0.5)
        var(--form-element-spacing-horizontal);
      overflow: hidden;
      color: var(--dropdown-color);
      text-decoration: none;
      text-overflow: ellipsis;

      &:hover {
        background-color: var(--dropdown-hover-background-color);
      }
    }
  }
}

// Marker
details[role="list"] summary,
li[role="list"] > a {
  &::after {
    display: block;
    width: 1rem;
    height: calc(1rem * var(--line-height, 1.5));
    margin-inline-start: 0.5rem;
    float: right;
    transform: rotate(0deg);
    background-position: right center;
    background-size: 1rem auto;
    background-repeat: no-repeat;
    content: "";
  }
}

// Global dropdown only
details[role="list"] {
  padding: 0;
  border-bottom: none;

  // Style <summary> as <select>
  summary {
    margin-bottom: 0;

    &:not([role]) {
      height: calc(
        1rem * var(--line-height) + var(--form-element-spacing-vertical) * 2 +
          var(--border-width) * 2
      );
      padding: var(--form-element-spacing-vertical)
        var(--form-element-spacing-horizontal);
      border: var(--border-width) solid var(--form-element-border-color);
      border-radius: var(--border-radius);
      background-color: var(--form-element-background-color);
      color: var(--form-element-placeholder-color);
      line-height: inherit;
      cursor: pointer;

      @if $enable-transitions {
        transition: background-color var(--transition),
          border-color var(--transition), color var(--transition),
          box-shadow var(--transition);
      }

      &:active,
      &:focus {
        border-color: var(--form-element-active-border-color);
        background-color: var(--form-element-active-background-color);
      }

      &:focus {
        box-shadow: 0 0 0 var(--outline-width) var(--form-element-focus-color);
      }
    }
  }

  // Close for details[role="list"]
  &[open] summary {
    border-bottom-right-radius: 0;
    border-bottom-left-radius: 0;

    &::before {
      display: block;
      z-index: 1;
      position: fixed;
      top: 0;
      right: 0;
      bottom: 0;
      left: 0;
      background: none;
      content: "";
      cursor: default;
    }
  }
}

// All Dropdowns inside <nav>
nav details[role="list"] summary,
nav li[role="list"] a {
  display: flex;
  direction: ltr;
}

nav details[role="list"] summary + ul,
nav li[role="list"] > ul {
  min-width: fit-content;
  border-radius: var(--border-radius);

  li a {
    border-radius: 0;
  }
}

// Dropdowns inside <nav> as nested <details>
nav details[role="list"] {
  summary,
  summary:not([role]) {
    height: auto;
    padding: var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal);
  }

  &[open] summary {
    border-radius: var(--border-radius);
  }

  summary + ul {
    margin-top: var(--outline-width);
    margin-inline-start: 0;
  }

  summary[role="link"] {
    margin-bottom: calc(var(--nav-link-spacing-vertical) * -1);
    line-height: var(--line-height);

    + ul {
      margin-top: calc(var(--nav-link-spacing-vertical) + var(--outline-width));
      margin-inline-start: calc(var(--nav-link-spacing-horizontal) * -1);
    }
  }
}

// Dropdowns inside a <nav> without using <details>
li[role="list"] {
  // Open on hover (for mobile)
  // or on active/focus (for keyboard navigation)
  &:hover > ul,
  a:active ~ ul,
  a:focus ~ ul {
    display: flex;
  }

  > ul {
    display: none;
    margin-top: calc(var(--nav-link-spacing-vertical) + var(--outline-width));
    margin-inline-start: calc(
      var(--nav-element-spacing-horizontal) - var(--nav-link-spacing-horizontal)
    );
  }

  > a::after {
    background-image: var(--icon-chevron);
  }
}

label > details[role="list"] {
  margin-top: calc(var(--spacing) * .25);
  margin-bottom: var(--spacing);
}
