Custom CSS
Style your published form beyond the Theme controls using the stable halloform-* class hooks.
How it works#
When enabled, Custom CSS lives on the form's Behavior settings tab. Whatever you paste is injected as a <style> tag on every page of your published form (and in preview), letting you override the runtime styling beyond what the Theme controls expose.
The class hooks#
Write your rules against the stable halloform-* classes below. These are a supported contract: they won't change when we update the UI. Don't target the utility classes you might see in dev tools (like flex or rounded-md) — those can change at any time.
- .halloform-form — the form on the current page.
- .halloform-page — the current step (the same element as .halloform-form).
- .halloform-progress — the progress-bar track; .halloform-progress-fill — its filled portion.
- .halloform-field — every question wrapper; .halloform-field-{type} — the wrapper for one field type.
- .halloform-label — a question's label.
- .halloform-input — text inputs, textareas and dropdowns.
- .halloform-option — one choice in a single-select, multi-select or picture-choice field.
- .halloform-error — an inline validation message under a field.
- .halloform-button-submit / .halloform-button-next / .halloform-button-prev — the navigation buttons.
The {type} suffix is the field's name lower-cased with dashes — e.g. "Short answer" becomes .halloform-field-short-answer, "Email" becomes .halloform-field-email.
Examples#
/* Rounder, roomier inputs */
.halloform-input {
border-radius: 12px;
padding: 14px 16px;
}
/* Full-width, uppercase submit button */
.halloform-button-submit {
width: 100%;
text-transform: uppercase;
letter-spacing: 0.04em;
}
/* Highlight just the email field */
.halloform-field-email {
background: #f8fafc;
padding: 12px;
border-radius: 12px;
}
/* Bigger, bolder question labels */
.halloform-label {
font-size: 1.1rem;
font-weight: 700;
}
/* Thicker progress bar */
.halloform-progress { height: 6px; }
.halloform-progress-fill { background: var(--theme-primary); }Tips#
- Always prefix selectors with a halloform-* hook rather than bare element selectors (input, body) so you only touch the form.
- Use your browser's inspector to confirm a hook is present on the element you want to style.
- Changes save with the rest of the Behavior tab — and re-enable Publish so you can ship them.
- Need a hook that isn't listed here? Let us know and we'll add it.