I've created an example that will hopefully get what you're looking for.
The list I'm using for this example is below.

See full flow below. I'll go into each of the actions.

When an item is created will trigger when I create a new item.

Compose builds up the object structure that we will use to create our HTML table. It effectively maps out an array of objects where we specify the Name of the property and the Value of the property using our dynamic values. I've also formatted the Created date, so it displays a bit nicer.
[
{
"Name": "Title",
"Value": @{triggerOutputs()?['body/Title']}
},
{
"Name": "Amount",
"Value": @{triggerOutputs()?['body/Amount']}
},
{
"Name": "Created",
"Value": @{formatDateTime(triggerOutputs()?['body/Created'], 'dddd, dd MMM yyyy')}
},
{
"Name": "Status",
"Value": @{triggerOutputs()?['body/Status/Value']}
}
]

If we ran the flow now, the output from our Compose would look similar to below.
[
{
"Name": "Title",
"Value": "Harold"
},
{
"Name": "Amount",
"Value": 88
},
{
"Name": "Created",
"Value": "Wednesday, 25 Jan 2023"
},
{
"Name": "Status",
"Value": "Pending"
}
]
Create HTML table uses the output from the Compose.

Compose Style has our CSS to style the table. I've used some sample CSS, but you can just add your own here. In my CSS I've actually hidden the header of the table.
<style>
table {
border-collapse: collapse;
}
table td {
border: 1px solid #ddd;
padding: 6px 20px;
text-align: left;
}
table th {
display: none;
}
table td:first-child {
font-weight: bold;
}
</style>

Send an email uses the output from the Create HTML table and Compose Style, similar to what you've already done.

The output we get in the email is shown below.

----------------------------------------------------------------------
If I've answered your question, please mark the post as Solved.
If you like my response, please consider giving it a Thumbs Up.