The way to do this is to use plone.app.theming. If you need to integrate Plone with other back-end servers, legacy systems, or any webservice, you can use Diazo to all combine it in a unified look & feel.
An older (Plone 4.2) quick guide which may help to understand Diazo better:
Using Diazo is also possible as a standalone service.
Normally the Diazo theme transformation is running inside the Plone process. You can compile the Diazo rules to low level XSLT and let a webserver do the actual transformation, or run the Diazo transformations in a WSGI enabled service.
General information CSS and other resources in Plone:
Up to version 4.1, Plone was using an older style of theming. Using that is **not** considered best practice anymore. See `older versions of these docs <https://docs.plone.org/4/en/adapt-and-extend/theming/old_style_theming.html>`_ if you need the information.