:where([data-appearance]:is(button), [role='tab']:is(button)) {
  border: 2px solid transparent;
  font-weight: 500;
  font-size: 12px;
  border-radius: 8px;
  line-height: 1.2;
  padding: 8px 24px 8px 24px;
  text-transform: uppercase;
  font-family: inherit;

  &:hover:not(:disabled) {
    cursor: pointer;
  }

  &:focus-visible {
    outline: none;
  }
}

[data-theme='dark'] {
  [data-appearance='primary']:is(button) {
    background-color: var(--da-primary);
    border: 2px solid transparent;
    color: var(--db-secondary);

    &:hover:not(:disabled) {
      background-color: var(--da-tertiary);
      border: 2px solid var(--da-tertiary);
    }

    &:focus:not(:disabled),
    &:focus-visible:not(:disabled) {
      border: 2px solid var(--da-primary);
      background-color: var(--db-tertiary);
      color: var(--df-secondary);
    }

    &:active:not(:disabled) {
      border: 2px solid var(--da-tertiary);
    }

    &:disabled {
      background-color: transparent;
      border: 2px solid var(--db-quaternary);
      color: var(--df-secondary);
    }

    &[data-variant='destructive'] {
      background-color: var(--error-500);
      border: 2px solid transparent;

      &:hover:not(:disabled) {
        background-color: var(--error-700);
        border: 2px solid var(--error-700);
      }

      &:focus:not(:disabled),
      &:focus-visible:not(:disabled) {
        border: 2px solid var(--error-500);
      }

      &:active:not(:disabled) {
        background-color: var(--app-red);
        border: 2px solid var(--error-700);
      }

      &:disabled {
        background-color: transparent;
        border: var(--df-secondary);
      }
    }
  }

  [data-appearance='secondary']:is(button) {
    background-color: var(--db-tertiary);
    color: var(--df-secondary);

    &:hover:not(:disabled) {
      background-color: var(--db-quaternary);
      color: var(--da-primary);
    }

    &:focus:not(:disabled),
    &:focus-visible:not(:disabled) {
      border: 2px solid var(--da-primary);
    }

    &:active:not(:disabled) {
      color: var(--da-primary);
      border: 2px solid var(--db-quaternary);
    }

    &:disabled {
      background-color: transparent;
      border: 2px solid var(--db-quaternary);
    }
  }
}

[data-theme='light'] {
  [data-appearance='primary']:is(button) {
    background-color: var(--la-primary);
    color: var(--lb-primary);

    &:hover:not(:disabled) {
      background-color: var(--la-tertiary);
    }

    &:focus:not(:disabled),
    &:focus-visible:not(:disabled) {
      color: var(--lf-secondary);
      background-color: var(--lb-tertiary);
      border: 2px solid var(--la-primary);
    }

    &:active:not(:disabled) {
      border: 2px solid var(--la-tertiary);
    }

    &:disabled {
      background-color: transparent;
      border: 2px solid var(--lb-quaternary);
      color: var(--lf-secondary);
    }

    &[data-variant='destructive'] {
      background-color: transparent;
      border: 2px solid var(--error-200);
      color: var(--lf-secondary);

      &:hover:not(:disabled) {
        background-color: var(--error-500);
        color: var(--lb-secondary);
        border: 2px solid var(--error-500);
      }

      &:focus:not(:disabled),
      &:focus-visible:not(:disabled) {
        background-color: var(--error-700);
        border: 2px solid var(--error-700);
        color: var(--lb-secondary);
        border: 2px solid var(--error-700);
      }

      &:active:not(:disabled) {
        background-color: var(--app-red);
        color: var(--lb-primary);
        border: 2px solid var(--error-700);
      }

      &:disabled {
        background-color: var(--error-500);
        color: var(--lb-secondary);
      }
    }
  }

  [data-appearance='secondary']:is(button) {
    background-color: var(--lb-tertiary);
    color: var(--lf-secondary);

    &:hover:not(:disabled) {
      background-color: var(--lb-quaternary);
      color: var(--la-primary);
    }

    &:focus:not(:disabled),
    &:focus-visible:not(:disabled) {
      background-color: var(--lb-tertiary);
      border: 2px solid var(--la-primary);
      color: var(--lf-secondary);
    }

    &:active:not(:disabled) {
      background-color: var(--lb-tertiary);
      color: var(--la-primary);
      outline: 2px solid var(--lb-quaternary);
    }

    &:disabled {
      background-color: transparent;
      border: 2px solid var(--lb-quaternary);
    }
  }
}
