How to load CSS styles in a custom plugin in Strapi v5?

I recently started migrating to Strapi v5, and I’ve noticed some changes in how plugins are structured and imported. In the new format, we now have separate admin and server folders that need to be built first, and their output exported via package.json.

That part works fine - however, I’ve run into an issue when it comes to using regular CSS styles in the admin part of the plugin (i.e., not inline styles or CSS-in-JS, but actual .css or .module.css files).

It seems that even though the styles are bundled and present in the plugin’s dist/ directory (e.g., dist/styles.css), they don’t actually apply to the UI once the plugin is rendered in the Strapi admin.I also see that these CSS files aren’t being loaded at all by the app.

Folder structure

plugin/
  package.json (exports admin and server resources)
  admin/
  server/
  dist/
    admin/
    server/
    styles.css

Steps to reproduce

  1. Create a new Strapi v5 project.
  2. Generate a plugin using the Strapi CLI.
  3. Add a CSS file inside the plugin’s admin folder (e.g., styles.css) and try to apply some styles to a component.

Question

Is there a correct or recommended way to load external CSS in a Strapi v5 plugin?
Where should I import the CSS to make sure it’s applied properly in the admin interface?

Is CSS-in-JS the only supported approach for styling plugin code in Strapi 5?

Any tips or working examples would be appreciated