The method you've used in other systems will work fine in AEM, too. Simply expose a property via your template's page properties cq:dialog (`./pageClass` for example), and output the value of that property into the class attribute of your template's HTML element. In JSP:
<html class="<%= xssAPI.encodeForHTMLAttr(properties.get("pageClass", "")) %>">
or Sightly:
<html class="${properties.pageClass}">
You can now define your page specific styles as follows (for example, to style paragraphs when pageClass is set to 'homePage'):
.homePage p { margin: 0 1em; }
A general discussion on the topic can be found here [0].
[0] https://css-tricks.com/why-use-classes-or-ids-on-the-html-element/