The problem comes from {App directory}\themesource\atlas_core\web\layouts\_layout-atlas.scss .
Lines 103 and 104 have errors :
padding: calc(var(--brand-logo-height / 2)) calc(var(--brand-logo-width / 2));
background-image: url(var($brand-logo));
It should be :
padding: calc(var(--brand-logo-height) / 2) calc(var(--brand-logo-width) / 2);
background-image: url(#{$brand-logo});
After changing that, my logo was correctly displayed with this in custom-variables.scss :
Fix
Move your logo to
themesource/<your_theme>/web/images/
and set
$brand-logo: "./images/logo.png";
Why
The old public folder is no longer copied at build time.
Only files in /web or explicitly imported in SCSS are bundled.
Alternative
If you want to keep it in public/images, import it manually:
@import "./public/images/logo.png"; $brand-logo: url("./public/images/logo.png");