Others have already given details of how the tx price is calculated.
I just want to add the following:
Forget wallets for the time being. At its core, a transaction consists of:
inputs: UTxOs (hash + index)
Ex: --tx-in 8b0695ee01d9453d4e44a45684864691d01aa98ac869974e9b7c926b7e2e0859#0
(The hash is actually the hash of the previous transaction that produced that utxo. If a transaction produces 2 output UTxOs, you will have 2 UTxOs with the transaction hash and indexes 0 & 1.)
outputs: address + value
where value is the amount of lovelace followed by 0 or more assets
an asset is expressed in the form [qty] [policyid] [token name]
– tx-out addr1qf9kg4vm2ha56mj8nqmy7wf6kdwysh2kqldm225y866zn0fnvsbek20aehqv4tcapsdss3vkkq05wvzutknzwcklfuzszmtrdh + 2000000 lovelace + 1 49c27c6bc106c212a861f17d59a0349f5bc0v3980035ebe3gf411e17.624e56G14443525b39
witnesses: private keys corresponding to the addresses holding the input UTxOs
The fee is calculated based on the size in bytes of the inputs and outputs + a minimum fee.
The sum of the input values must match the sum of the output values + the fee.
All transactions that you create with the same amount of inputs, and the same amount of outputs and values will result in identical fees.
If you have a single UTxO at an address with a value of 10 Ada and you want to send 5 Ada to someone, you will have a transaction with 1 input and 2 outputs. The input is your 10 Ada utxo and your 2 outputs are: 5 Ada to recipient address; 5 Ada - fees as change back to your address.
If you have 2 UTxOs with 5 Ada each and you want to send 8 Ada, you will have a transaction with 2 inputs and 2 outputs.
So there is no fixed transaction size when you want to send Ada because this depends on the amount of Ada that you want to send, and the number of UTxOs in your wallet that you need to cover that amount.
Now, different wallets choose to group input UTxOs in different ways. NAMI, for example, seems to always include all of the UTxOs in a wallet in each transaction. It does this to avoid ending up with multiple change UTxOs in your wallet. However this increases the transaction cost unnecessarily.
Other wallets allow you to choose the UTxOs to include manually.
So, the reason that you are seeing different fees is because of the way that your wallet is organising the UTxOs in its transactions and not because Cardano has a variable fee structure, because it doesn’t.