Functional requirements relate what a solution DOES.
They describe components, behaviors, entities, actions, inputs, and outputs. They contain the details of the design the user sees and the mechanisms that generate results.
Non-Functional requirements relate to what a system IS.
They describe qualities in terms of “-ilities,” e.g., reliability, modularity, flexibility, robustness, maintainability, scalability, usability, and so on.
I include descriptions of how the system is intended to be maintained and governed within non-functional requirements, but I suppose that’s a philosophical point.
All requirements should include the criteria by which functional and non-functional elements will be judged to be acceptable.
Requirements represent the To-Be State in abstract terms. The design represents the To-Be State in more concrete terms.
Many sources enumerate possible non-functional requirements, but the Wikipedia page provides a pretty inclusive list.