@layer components {
  .dropdown {
    position: relative;
  }

  .dropdown__menu {
    position: absolute;
    top: calc(100% + var(--space-1));
    left: 0;
    z-index: var(--z-dropdown);
    min-width: 12rem;
    padding: var(--space-1) 0;
    background-color: var(--color-background);
    border: 1px solid var(--color-gray-300);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-md);

    &[hidden] {
      display: none;
    }

    &.dropdown__menu--right {
      left: auto;
      right: 0;
    }

    &.dropdown__menu--lg {
      min-width: 16rem;
    }

    &.dropdown__menu--xl {
      min-width: 20rem;
    }

    &.dropdown__menu--up {
      top: auto;
      bottom: calc(100% + var(--space-1));
    }

    &.dropdown__menu--full-width {
      width: 100%;
      min-width: 100%;
    }

    &.dropdown__menu--outside-right {
      left: 100%;
      right: auto;
      margin-left: var(--space-2);
    }
  }

  .dropdown__header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: var(--space-3);
    padding: var(--space-3) var(--space-4);
    border-bottom: 1px solid var(--color-border);

    .dropdown__title {
      margin: 0;
      font-size: var(--text-base);
      font-weight: var(--font-semibold);
    }
  }

  .dropdown__body {
    padding: var(--space-1);
  }

  .dropdown__footer {
    padding: var(--space-2);
    border-top: 1px solid var(--color-border);
  }

  .dropdown__item {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    width: 100%;
    min-height: 2.5rem;
    padding: var(--space-2) var(--space-3);
    font: inherit;
    font-size: var(--text-sm);
    color: var(--color-text);
    text-align: left;
    text-decoration: none;
    background: none;
    border: 0;
    border-radius: var(--radius-sm);
    cursor: pointer;

    svg {
      flex-shrink: 0;
      width: 1.125rem;
      height: 1.125rem;
    }

    svg path {
      stroke: var(--color-text-muted);
    }

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

    &:focus-visible {
      outline: 3px solid var(--color-focus);
      outline-offset: -3px;
    }

    &.dropdown__item--danger {
      color: var(--color-error);

      svg path {
        stroke: var(--color-error);
      }
    }

    &.is-active {
      font-weight: var(--font-semibold);
      background-color: var(--color-gray-100);
    }
  }

  .dropdown__label {
    display: block;
    padding: var(--space-2) var(--space-3) var(--space-1);
    font-size: var(--text-sm);
    color: var(--color-text-muted);
  }

  .dropdown__divider {
    height: 1px;
    margin: var(--space-1) 0;
    background-color: var(--color-border);
  }

  .dropdown__btn {
    display: inline-flex;
    align-items: center;
    gap: var(--space-2);
    min-height: 2.75rem;
    padding: var(--space-2) var(--space-3);
    font: inherit;
    font-size: var(--text-sm);
    color: var(--color-text);
    background: var(--color-background);
    border: 1px solid var(--color-gray-500);
    border-radius: var(--radius-md);
    cursor: pointer;

    svg {
      width: 1rem;
      height: 1rem;
    }

    svg path {
      stroke: currentColor;
    }

    .dropdown__btn-label {
      color: var(--color-text-muted);
    }

    .dropdown__btn-value {
      font-weight: var(--font-semibold);
      color: var(--color-text);
    }

    &:hover {
      border-color: var(--color-gray-600);
    }

    &:focus-visible {
      outline: 3px solid var(--color-focus);
      outline-offset: 2px;
    }
  }

  [data-theme="dark"] {
    .dropdown__menu,
    .dropdown__btn {
      background-color: var(--color-surface);
    }

    .dropdown__item:hover,
    .dropdown__item.is-active {
      background-color: var(--color-hover);
    }
  }
}
