I get that Object-Oriented Programming is clearly intended to pay a lot more attention to objects and use them as the core concept of the software's architecture, but I find it hard to imagine any kind of even somewhat blurry line that demarcates proper OOP and something like...
One reason for that is that is a lack of definition. There is no clear line because making any kind of line requires a definition.
I have never seen any group -- from rooms of engineers to standards groups -- define what OOP means with any clarity. "Proper OOP" has no definition. It means one thing to somebody, another thing to somebody else.
Even the name itself, "oriented", is ambiguous. The language or design or style tends to direct toward objects. It is oriented around or toward objects. That is not a feature list or strict definition, just a tendency in a direction.
As Hogman, Ravyne, myself, and others are repeating, languages like C++ don't fit nicely into any particular bucket for various definitions. That is one reason C++ is often called multi-paradigm. Sometimes, some features of the language do not meet one definition's strict requirement, but they might satisfy requirements for other definitions. It all comes to definitions.
Some definitions are a continuum, some definitions are checklists requiring absolute adherence, some definitions are nominal scales with clusters of features, some definitions are other variants entirely.
When undefined terms like "Proper OOP" are used, as though a term that has no solid definition has a precise and agreed-upon definition, the argument is pointless. When even the experts cannot come up with definitions of the terms an attempt to use the term as an authority is a logical error.