The Drupal layout builder module may be leveraged for customizing the page layout per entity or content type within Drupal. Optionally, this default may be customized by each individual content item. That way, the module can be used as a custom page builder tool.
By default, layouts are rendered using custom elements by default, such that any layout settings are forwarded to the frontend. Contained blocks may build their content using custom elements, or fallback to Drupal rendering and regular HTML.
Please see Drupal > Providing blocks for more details on how to provide Drupal blocks that render custom elements.