---
url: 'https://dxpr.com/hc/documentation/learn-dxpr-builder/development/css-architecture'
title: 'CSS architecture | DXPR'
author:
  name: docs-sync
  url: 'https://dxpr.com/users/docs-sync'
date: '2026-10-23T14:31:17+00:00'
copyright: 'Copyright DXPR. All rights reserved.'
type: article
summary: 'The class naming scheme and how it combines with Bootstrap'
tags:
  - 'Architecture and APIs'
image: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
published: true
og:
  site_name: DXPR
  updated_time: '2026-10-23T14:31:17+0000'
  'image:alt': 'DXPR, powered by Drupal: AI-powered Drupal for marketers.'
schema:
  '@context': 'https://schema.org'
  '@graph':
    -
      mainEntity: {  }
    -
      '@type': TechArticle
      headline: 'CSS architecture'
      description: 'The class naming scheme and how it combines with Bootstrap'
      image:
        '@type': ImageObject
        url: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
        width: '1200'
        height: '630'
      datePublished: '2026-10-23T14:31:17+0000'
      dateModified: '2026-10-23T14:31:17+0000'
      author:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
        url: 'https://dxpr.com/'
        logo:
          '@type': ImageObject
          url: 'https://dxpr.com/themes/custom/dxpr_com/dxpr-logo-dark.svg'
          width: '1348'
          height: '501'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
        url: 'https://dxpr.com/'
        logo:
          '@type': ImageObject
          url: 'https://dxpr.com/themes/custom/dxpr_com/dxpr-logo-dark.svg'
          width: '1348'
          height: '501'
      mainEntityOfPage: 'https://dxpr.com/hc/documentation/learn-dxpr-builder/development/css-architecture'
      articleSection: 'Architecture and APIs'
    -
      '@type': WebPage
      '@id': 'https://dxpr.com/hc/documentation/learn-dxpr-builder/development/css-architecture'
      description: 'The class naming scheme and how it combines with Bootstrap'
      breadcrumb:
        '@type': BreadcrumbList
        itemListElement:
          -
            '@type': ListItem
            position: 1
            name: Home
            item: 'https://dxpr.com/'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
      inLanguage: en
---
[Help Center](/hc)/[Documentation](/hc/documentation) /[Learn DXPR Builder](/hc/documentation/learn-dxpr-builder) /[Extend](/hc/documentation/learn-dxpr-builder/extend) /[Architecture and APIs](/hc/documentation/learn-dxpr-builder/extend/architecture) # CSS architecture.

The class naming scheme and how it combines with Bootstrap

 Learn DXPR BuilderExtendArchitecture and APIs

   ## In this guide

Builder content is Bootstrap 5 markup plus a small set of `az-`classes. Knowing which classes appear on published pages, and which only exist while the editor runs, tells you what your theme CSS can target.

## Classes on published pages

### Layout

| Markup | Classes |
|---|---|
| Section | `az-section`, with `container` or `container-fluid` inside |
| Row | Bootstrap `row` |
| Column | Bootstrap `col-*` classes, one per breakpoint |
| Content element | One class per element type, such as `az-text`, `az-image` or `az-images-carousel`; Social Links uses `st-social`. Most also carry `az-element`; Button and Image do not |

Content saved by older versions can still carry `az-row` and `az-column`. The editor recognises them and leaves them out the next time the row or column is saved.

### Modifiers

| Class | Set by |
|---|---|
| `az-row--equal-height` | **Equal-height columns** on a row; without it the row gets `align-items-start` |
| `az-row--reverse-horizontal` | **Mirror row** on a row |
| `az-util-vertical-centering` | **Vertical centering** on a section or column |

### Bootstrap grid

Columns use Bootstrap's grid classes:

| Class | Width |
|---|---|
| `col` | Shares the row equally |
| `col-6` | 50% |
| `col-md-4` | 33% from 768 px |
| `col-lg-3` | 25% from 992 px |

## Writing custom CSS

- Scope builder-specific rules to `.az-section` or to the type classes, such as `.az-text` or `.az-button`. `.az-element` misses Button and Image.
- Do not override Bootstrap's grid classes; the editor sets column widths through them.
- For one-off styling, add a class in the element's **HTML classes**field and style that class.

## Editor-only classes

These classes exist only while the editor is running, so published pages never match them:

| Class | Where |
|---|---|
| `dxpr-builder-ui` | Every piece of editor interface: control bars, menus, dialogs |
| `controls` | The control bar of an element |
| `dxpr-editor` | The field container in every view mode except Preview |
| `az-ctnr` | The field container once the editor has started |
| `az-sortable-placeholder` | The drop placeholder while you drag an element |

The editor's own styles are in `dxpr_builder/css/dxpr_builder_backend.css`, built from `dxpr_builder/sass/dxpr_builder_backend.scss`.

## Bootstrap version

The builder writes Bootstrap 5 markup. If your theme does not load Bootstrap 5, set **Sideload Bootstrap files** to **Bootstrap 5** at **DXPR Studio &gt; DXPR Builder &gt; General Settings**, under **Bootstrap**. **None (theme provides Bootstrap)** assumes your theme loads it.