Docs  /  Settings  /  Customising the design (CSS)

Customising the design (CSS)

Last updated: 21. October 2026

The configurator should look like your shop: colours, font, corners, the look of the selection fields. You adjust all of this with CSS, without any JavaScript. This page applies to the V3 frontend engine. Legacy generates different HTML, so the variables and classes below do not apply there.

What the configurator already takes from the shop

In a shop – via a shop plugin or the HTML snippet – the configurator takes font, font size and text colour from your theme. You do not need to do anything for this. You only need to adjust what the configurator brings along itself: accent colour, borders, backgrounds, corners.

If you embed it with data-configento-embed-mode="admin-preview", it shows title, price and summary itself and also uses its own colours for texts. Even then it inherits the font from the page.

Where your CSS belongs

You have two places:

  • Your shop's theme – the right place if all configurators should look the same.
  • Custom CSS in the Component Settings under Design – the right place for a single component. It is loaded with the configurator, in the shop and in the preview in the admin.

Put [data-configento] in front of rules for individual elements, e.g. [data-configento] .cfg-toggle-item__price. The configurator loads its own CSS after your theme; with this prefix your rule still wins. This is not necessary for the variables below.

Colours, font and corners

The simplest adjustment: set variables on :root. They take effect in the whole configurator and also in the enlarged image view and the info windows, which open outside the configurator.

:root {
  --configento-color-accent: #1d3c78;
  --configento-color-border: #c8d0e0;
  --configento-radius-md: 0;
}
Variable Default Affects
--configento-color-accent #2563eb Selected values, radio buttons and checkboxes, selected images, active tab, progress bar, Next button, links in texts
--configento-color-accent-fg #ffffff Text on surfaces in the accent colour, e.g. in the Next button
--configento-color-accent-soft #dbeafe Light background in the accent colour, e.g. for the active tab
--configento-color-border #e2e8f0 Borders and dividers
--configento-color-border-strong #cbd5e1 Borders of input fields and buttons
--configento-color-bg #ffffff Background of the configurator
--configento-color-bg-subtle #f8fafc Slightly set-off surfaces
--configento-color-bg-elevated #ffffff Groups, select lists, buttons and windows
--configento-color-fg #0f172a Text – only with admin-preview; in the shop it comes from the theme
--configento-color-fg-muted #64748b Secondary texts – only with admin-preview
--configento-color-error #b91c1c Error messages and invalid fields
--configento-color-error-soft #fee2e2 Light background of errors
--configento-color-success, --configento-color-success-soft #059669, #d1fae5 Success messages
--configento-color-warning, --configento-color-warning-soft #b45309, #fef3c7 Warnings
--configento-radius-sm, -md, -lg 4px, 8px, 12px Corners: small elements, fields and tiles, windows
--configento-font-family Font of the page Font – only needed if the configurator should use a different font than the page

The names of these variables stay the same in all 3.x versions.

Active color: If an Active color is set in the component settings under Design, it applies to this component instead of --configento-color-accent. Leave the field empty if the colour should come from your CSS.

Different font: If the configurator should use a different font than the page, set it on the element with data-configento. The font must be loaded on the page, for example via your theme.

[data-configento] { font-family: 'Source Sans 3', sans-serif; }

Styling individual elements

For styling beyond the variables there are classes and attributes that we guarantee: they stay the same in all 3.x versions and only change with a new first version digit. Other classes and the rest of the HTML structure may change.

Frame of every characteristic

Class / attribute Element
.cfg-char The whole characteristic. Also carries the classes from the characteristic's CSS class field.
[data-configento-char-id], [data-configento-char-type] On the same element: ID and data type of the characteristic, e.g. radiobuttons, checkbox, text, area, select
[data-configento-invalid] On the same element, as long as an error message is shown
.cfg-char__head Header row with the title
.cfg-char__title Title
.cfg-char__required Required-field asterisk in the title
.cfg-char__info Info text below the title
.cfg-char__body The input element with everything that belongs to it
.cfg-char__errors, .cfg-char__error List of error messages and each single message

Radio buttons and checkboxes

Class / attribute Element
.cfg-toggle-list List of all values
.cfg-toggle-item with [data-configento-value-id] One value, with its ID
.cfg-toggle-item__label The label around the whole row. The input (type="radio" or type="checkbox") is its direct child.
.cfg-toggle-item__image Image of the value
.cfg-toggle-item__text Text block with label and info texts
.cfg-toggle-item__label-text Label of the value
.cfg-toggle-item__info Info text of the value
.cfg-toggle-item__price Surcharge

You reach the selected state via the input, e.g. .cfg-toggle-item__label:has(input:checked).

Input fields and select lists

Class Element
input.cfg-input Single-line input field
textarea.cfg-textarea Multi-line input field
select.cfg-select Select list

If CSS isn't enough because a characteristic should look and behave completely differently – for example as a licence plate – you draw it with your own rendering in JavaScript.

The easiest way to target a specific characteristic is your own class: enter it in the editor in the characteristic's CSS class field, and it ends up on the .cfg-char element.

Examples

Custom radio buttons – circle via CSS instead of the browser default, selected row highlighted:

[data-configento] [data-configento-char-type="radiobuttons"] .cfg-toggle-item__label > input {
  appearance: none;
  width: 1.25rem;
  height: 1.25rem;
  border: 2px solid var(--configento-color-accent);
  border-radius: 50%;
}
[data-configento] [data-configento-char-type="radiobuttons"] .cfg-toggle-item__label > input:checked {
  background: radial-gradient(var(--configento-color-accent) 45%, transparent 50%);
}
[data-configento] .cfg-toggle-item__label:has(input:checked) {
  background: var(--configento-color-accent-soft);
}

For this, set --configento-color-accent and --configento-color-accent-soft on :root, as shown above.

Show errors more clearly:

[data-configento] .cfg-char[data-configento-invalid] .cfg-char__title { color: var(--configento-color-error); }
[data-configento] .cfg-char[data-configento-invalid] .cfg-input { border-color: var(--configento-color-error); }

Hide surcharges, for example if your shop shows them differently:

[data-configento] .cfg-toggle-item__price { display: none; }

Troubleshooting

Problem Cause and solution
Your rule has no effect The configurator loads its CSS after your theme. Put [data-configento] in front of the selector.
Colour works in the configurator, but not in the enlarged image view The variable is set on an element instead of on :root. The enlarged view opens outside the configurator.
Accent colour from the CSS is ignored An Active color is set in the component. Clear the field.
Text colour does not change In the shop, the text colour comes from the theme. --configento-color-fg only works with admin-preview.
Everything looks different after switching to V3 Legacy has different classes. Rebuild your CSS with the variables and classes on this page and check it in the preview.

Next steps


← All articles Try free for 14 days