Squarely "framework" for most sites where Drupal makes sense because if you're not doing something custom you're probably using something else entirely, but you can really get far without writing anything yourself.
An installation gets you a pile of code ("core") that you never touch, which is enough to establish the schema of a database resulting in the ability to do many things through the web UI. If you want to do more things, you add more code, either "contrib" (maintained by the community, kind of like a distant cousin to npm packages) or custom (write it yourself, but only create new files that invoke core/contrib hooks, don't modify core/contrib files). The more contrib/custom code you add, the more that the web UI lets you do, typically.
It begins as a basic CMS and ends up as a bespoke CMS and/or something that doesn't even resemble a CMS, depending on what you do with it. At some point in the middle of the process, you may approach and then whiz past a CMS roughly as powerful as WordPress.