However, 35.86 bytes is merely enough for storing the size of scriptPubKey (1 bytes) + std P2PKH scriptPubKey (25 bytes) + value (8 bytes)
So where is the data for the 36 bytes outpoint (txid + index)?
The representation is compressed. The txid, height, version, and coinbase flag are _shared_ among all outputs for a transaction. The value and index are stored in variable length compressed representations, the scriptpubkey is stored in a templitized compressed representation (e.g. only encodes the the type and the hash for p2sh/p2pkh outputs).
See the diagram at the top of coins.h.