.btn {
  display: inline-flex;
  align-items: center;
  font-family: var(--primary-typography);
  font-size: var(--btn-md);
  line-height: var(--line-h-btn-md);
  padding: 0.875rem 2.75rem;
  gap: 0.75rem;
  letter-spacing: 1px;
  font-weight: 600;
  text-transform: uppercase;
  text-align: center;
  border: 1px solid transparent;
  transition: all 150ms ease-in-out;
  text-decoration: none;

  &:disabled,
  &.disabled {
    color: var(--neutral-01);
    background-color: var(--neutral-05);
    border-color: var(--neutral-05);
    pointer-events: none;
    user-select: none;
  }

  &:after {
    color: var(--accent-02);
  }
}

.btn--primary {
  color: var(--neutral-01);
  background-color: var(--primary-01);

  &:hover {
    background-color: var(--accent-03);
    border-color: var(--accent-03);
    color: var(--neutral-01);
  }

  &:focus {
    background-color: var(--accent-03);
    border-color: var(--accent-03);
    outline: 2px solid var(--neutral-01);
    outline-offset: -4px;
    color: var(--neutral-01);
  }

  &:active {
    background-color: var(--accent-03);
    border-color: var(--primary-01);
    outline: 2px solid var(--primary-01);
    outline-offset: -2px;
  }

  &.btn-nested-icon--after:after {
    color: var(--accent-02);
  }
}

.btn--secondary {
  color: var(--neutral-01);
  background-color: var(--primary-02);

  &:hover {
    background-color: var(--accent-06);
    border-color: var(--accent-06);
    color: var(--neutral-01);
  }

  &:focus {
    background-color: var(--accent-06);
    border-color: var(--accent-06);
    outline: 2px solid var(--neutral-01);
    outline-offset: -4px;
    color: var(--neutral-01);
  }

  &:active {
    background-color: var(--accent-06);
    border-color: var(--primary-02);
    outline: 2px solid var(--primary-02);
    outline-offset: -2px;
  }
}

.btn--outline {
  color: var(--primary-01);
  background-color: transparent;
  border-color: var(--primary-01);

  &.btn--icon-only {
    color: var(--secondary-02);
    border-color: var(--secondary-02);
  }

  &:hover {
    color: var(--neutral-01);
    background-color: var(--accent-03);
    border-color: var(--accent-03);
  }

  &:focus {
    color: var(--neutral-01);
    background-color: var(--accent-03);
    border-color: var(--accent-03);
    outline: 2px solid var(--neutral-01);
    outline-offset: -4px;
  }

  &:active {
    color: var(--neutral-01);
    background-color: var(--accent-03);
    border-color: var(--primary-01);
    outline: 2px solid var(--primary-01);
    outline-offset: -2px;
  }

  &:disabled,
  &.disabled {
    color: var(--neutral-06);
    background-color: transparent;
    border-color: var(--neutral-06);
  }
}

.btn--outline-light {
  color: var(--accent-01);
  background-color: transparent;
  border-color: var(--accent-01);

  &:hover {
    color: var(--primary-01);
    background-color: var(--accent-01);
    border-color: var(--accent-01);
  }

  &:focus {
    color: var(--primary-01);
    background-color: var(--accent-01);
    border-color: var(--accent-01);
    outline: 2px solid var(--primary-01);
    outline-offset: -4px;
  }

  &:active {
    color: var(--primary-01);
    background-color: var(--accent-01);
    border-color: var(--accent-03);
    outline: 2px solid var(--accent-03);
    outline-offset: -2px;
  }

  &:disabled,
  &.disabled {
    color: var(--neutral-06);
    background-color: transparent;
    border-color: var(--neutral-06);
  }
}

.btn--sm {
  font-size: var(--btn-sm);
  line-height: var(--line-h-btn-sm);
  padding: 0.75rem 2rem;
  gap: 0.5rem;
}

.btn--rounded {
  border-radius: 2rem;
}

.btn--icon-only {
  padding: 0.5rem;
  aspect-ratio: 1/1;
  min-width: 2.75rem;

  .label {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border-width: 0;
  }

  i {
    line-height: 0;
    margin: auto;
  }

  &.btn--sm {
    min-width: 1.5rem;
    padding: 0.25rem;
  }
}

.btn-nested-icon--after:after {
  font-weight: 900;
  font-family: "FontAwesome";
  font-size: 0.75em;
}

.btn-nested-icon--chevron:after {
  content: "\f054";
}
