Custom CSS gives you complete control over the visual appearance of your forms and Fuse activities. NueForm provides a comprehensive set of CSS class selectors and CSS custom properties (variables) that you can target in your custom styles.
- Open your form in the builder.
- Navigate to the Design tab in the settings panel.
- Scroll to the Custom CSS section.
- Enter your CSS rules.
- Changes are reflected in the live preview immediately.
- Open your Fuse activity in the builder.
- Navigate to the Design tab.
- Scroll to the Custom CSS section.
- The CSS editor shows selectors specific to your chosen activity type.
These selectors are available for standard forms:
| Selector | Description |
|---|
.fc-container | The main form container. This is the root element that wraps the entire form. |
.fc-welcome | The welcome screen container. |
.fc-thankyou | The thank-you screen container. |
.fc-progress-bar | The progress bar track (the background bar). |
.fc-progress-fill | The filled portion of the progress bar (shows current progress). |
| Selector | Description |
|---|
.fc-question-title | The question title text. Includes the question number and the rich text content. |
.fc-question-description | The question description text below the title. |
.fc-question-number | The question number prefix (e.g., "1 ->"). |
| Selector | Description |
|---|
.fc-button | Primary buttons throughout the form (OK, Start, Submit). |
.fc-input | Text inputs and textareas where respondents type their answers. |
.fc-choice | Individual choice option containers (multiple choice, dropdown options). |
.fc-choice.selected | A choice option that is currently selected. |
.fc-rating-icon | Individual rating shapes (stars, hearts, thumbs, etc.). |
.fc-scale-item | Individual items on opinion scales and NPS scales. |
| Selector | Description |
|---|
.fc-top-logo | The top logo container. |
.fc-watermark | The watermark or bottom-left logo element. |
/* Make buttons fully rounded */
.fc-button {
border-radius: 9999px;
}
/* Add a thicker bottom border to inputs */
.fc-input {
border-bottom-width: 3px;
}
/* Add a hover slide effect to choices */
.fc-choice:hover {
transform: translateX(4px);
}
/* Style the selected choice */
.fc-choice.selected {
border-color: var(--fc-accent);
background-color: var(--fc-accent-10);
}
/* Increase progress bar height */
.fc-progress-bar {
height: 6px;
}
Fuse activities have their own set of CSS selectors, organized into general, shared activity, and activity-specific categories.
These apply to every Fuse activity:
| Selector | Description |
|---|
.fuse-container | Root container for the entire Fuse page. |
.fuse-title | The activity title heading. |
.fuse-description | The activity description text. |
.fuse-activity-area | The wrapper around the activity widget itself. |
.fuse-live-badge | The live participant count badge. |
.fuse-participant-bar | The row of participant avatars. |
.fuse-join-screen | The join/name entry screen shown before the activity. |
.fuse-activity-indicator | The floating activity indicator notification. |
These selectors are shared across multiple activity types:
| Selector | Description |
|---|
.fuse-option | Option button (used in polls). |
.fuse-option-label | Text label within an option. |
.fuse-option-percentage | Percentage display within an option. |
.fuse-option-votes | Vote count text within an option. |
.fuse-total-count | Total votes summary text. |
.fuse-input | Text inputs in activities. |
.fuse-submit-btn | Submit/add buttons. |
.fuse-hint | Helper or instruction text. |
.fuse-list-item | Item cards in list-type activities. |
.fuse-item-text | Text content within list items. |
.fuse-item-author | Contributor name on list items. |
.fuse-score | Upvote/downvote score display. |
.fuse-upvote | Upvote button. |
.fuse-downvote | Downvote button. |
.fuse-stat-value | Statistic display value (e.g., average, median). |
.fuse-stat-label | Statistic display label. |
.fuse-histogram | Distribution chart container. |
.fuse-histogram-bar | Individual bar within a histogram. |
.fuse-champion | Winner/champion display element. |
.fuse-consensus | Consensus section display. |
.fuse-round-label | Round header text (multi-round activities). |
.fuse-rank-number | Rank position badge. |
.fuse-status | Status or count text. |
Each activity type has unique selectors:
| Selector | Description |
|---|
.fuse-classic-poll | Classic Poll root container. |
.fuse-poll | Poll options container. |
.fuse-poll--bar-chart | Bar chart display mode modifier. |
.fuse-bar | Individual bar chart column. |
.fuse-bar-label | Bar chart label text. |
| Selector | Description |
|---|
.fuse-multi-vote-poll | Multi-Vote Poll root container. |
| Selector | Description |
|---|
.fuse-image-poll | Image Poll root container. |
| Selector | Description |
|---|
.fuse-ranked-poll | Ranked Poll root container. |
| Selector | Description |
|---|
.fuse-elimination-poll | Elimination Poll root container. |
| Selector | Description |
|---|
.fuse-hot-takes | Hot Takes root container. |
.fuse-statement | The statement text being debated. |
.fuse-tug-bar | The tug-of-war visualization bar. |
.fuse-percentage--agree | Agree percentage display. |
.fuse-percentage--disagree | Disagree percentage display. |
.fuse-vote-btn--agree | Agree button. |
.fuse-vote-btn--disagree | Disagree button. |
| Selector | Description |
|---|
.fuse-would-you-rather | Would You Rather root container. |
.fuse-this-or-that | This Or That root container. |
.fuse-panel--left | Left option panel. |
.fuse-panel--right | Right option panel. |
.fuse-panel-label | Panel label text. |
.fuse-panel-percentage | Panel percentage display. |
| Selector | Description |
|---|
.fuse-sliding-scale | Sliding Scale root container. |
.fuse-slider | The slider track element. |
.fuse-slider-value | Current slider value display. |
.fuse-slider-label | Min/max label text. |
.fuse-stats | Statistics container. |
| Selector | Description |
|---|
.fuse-word-cloud | Word Cloud root container. |
.fuse-cloud | The cloud container. |
.fuse-word | Individual word in the cloud. |
| Selector | Description |
|---|
.fuse-collaborative-list | Collaborative List root container. |
| Selector | Description |
|---|
.fuse-ranked-list | Ranked List root container. |
| Selector | Description |
|---|
.fuse-rate-and-reveal | Rate & Reveal root container. |
| Selector | Description |
|---|
.fuse-pros-and-cons | Pros & Cons root container. |
.fuse-side-column | Individual pro or con column. |
| Selector | Description |
|---|
.fuse-top-n | Top N root container. |
| Selector | Description |
|---|
.fuse-predictions | Predictions root container. |
| Selector | Description |
|---|
.fuse-caption-this | Caption This root container. |
| Selector | Description |
|---|
.fuse-map-pins | Map Pins root container. |
| Selector | Description |
|---|
.fuse-qa-board | Q&A Board root container. |
| Selector | Description |
|---|
.fuse-tier-list | Tier List root container. |
.fuse-tier-row | Individual tier row. |
.fuse-tier-label | Tier label text (S, A, B, C, D, F). |
.fuse-tier-item | Individual item within a tier. |
.fuse-tier-badge | Item count badge on a tier. |
| Selector | Description |
|---|
.fuse-bracket | Bracket root container. |
.fuse-matchup | Matchup container. |
.fuse-matchup-entry | Individual matchup option. |
.fuse-matchup-label | Matchup option label. |
.fuse-matchup-votes | Matchup vote count display. |
In addition to class selectors, you can reference CSS custom properties in your rules. These are set by the theme system and adapt to each form's configuration.
| Variable | Description |
|---|
var(--fc-title-color) | Title text color. |
var(--fc-description-color) | Description text color. |
var(--fc-option-color) | Activity/option text color. |
var(--fc-font-question) | Title font family. |
var(--fc-font-description) | Description font family. |
var(--fc-font-option) | Activity/option font family. |
var(--fc-accent) | Accent/theme color. |
var(--fc-bg) | Background color. |
var(--fc-text) | Primary text color. |
var(--fc-btn-bg) | Button background color. |
var(--fc-btn-text) | Button text color. |
var(--fc-border) | Border color. |
var(--fc-input-bg) | Input background color. |
var(--fc-muted) | Muted/secondary text color. |
var(--fc-indicator-bg) | Activity indicator background color. |
var(--fc-indicator-text) | Activity indicator text color. |
var(--fc-font-indicator) | Activity indicator font family. |
You can reference these variables in your custom CSS to create styles that adapt to the form's theme:
/* Custom border using the theme's accent color */
.fc-choice {
border: 2px solid var(--fc-accent-30);
}
/* Custom input styling using theme colors */
.fc-input {
background-color: var(--fc-input-bg);
border-color: var(--fc-border);
}
/* Fuse activity with theme-aware styling */
.fuse-option {
border: 1px solid var(--fc-border);
border-radius: 20px;
}
In addition to form-level custom CSS, you can add custom CSS class names to individual questions and their media elements:
- Question Custom Class Name (
customClassName): Applied to the question container. - Media Custom Class Name (
media.customClassName): Applied to the media element.
This lets you target specific questions in your CSS:
/* Only style the "hero" question differently */
.hero-question .fc-question-title {
font-size: 3rem;
text-align: center;
}
Then set the question's custom class name to hero-question in the builder.
- Use CSS variables: Reference
var(--fc-accent) and other theme variables instead of hard-coding colors. This ensures your custom styles adapt when the theme changes. - Test in preview: Always preview your form after adding custom CSS to verify the styles look correct on both desktop and mobile.
- Specificity: NueForm's built-in styles use low specificity. Your custom CSS should override them without needing
!important in most cases. - Responsive design: Use media queries in your custom CSS if you need different styles on mobile vs. desktop.
- Avoid breaking layout: Be careful with properties like
position, display, and overflow that can break the form's layout.
/* Rounded, card-style questions */
.fc-container {
padding: 2rem;
}
/* Pill-shaped buttons */
.fc-button {
border-radius: 9999px;
padding: 12px 32px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.05em;
}
/* Underline-style inputs */
.fc-input {
border: none;
border-bottom: 2px solid var(--fc-border);
border-radius: 0;
background: transparent;
padding-left: 0;
}
.fc-input:focus {
border-bottom-color: var(--fc-accent);
}
/* Choice cards with hover effect */
.fc-choice {
border-radius: 12px;
transition: all 0.2s ease;
}
.fc-choice:hover {
transform: translateX(4px);
box-shadow: 0 4px 12px rgba(0,0,0,0.1);
}
/* Larger rating icons */
.fc-rating-icon {
font-size: 2rem;
}
/* Subtle progress bar */
.fc-progress-bar {
height: 3px;
opacity: 0.5;
}