It’s possible to do this by making the entire CSS file a Twig template.
Create a new file in your templates
folder, such as templates/css/styles.css
, with all the dynamic styles you want.
To prevent the browser from reloading the file on each request, make sure you set cache headers in the template.
{# Tell the browser to cache this page for 30 days #}
{% set expiry = now|date_modify('+30 days') %}
{% header "Cache-Control: max-age=" ~ (expiry.timestamp - now.timestamp) %}
{% header "Pragma: cache" %}
{% header "Expires: " ~ expiry|date('D, d M Y H:i:s', 'GMT') ~ " GMT" %}
Then load the CSS file just like any other from your webpage templates.
<link rel="stylesheet" type="text/css" href="/css/styles.css">