This guide explains how to visually customize the Flex Survey using CSS, even if you don't yet know the entire internal structure of SoluCX.
Everything here is based exclusively on the actual structure of the Flex Survey.
Inside the platform:
Form Structure > Custom Style
This field accepts pure CSS.
The inserted code is injected inside the form's iframe.
Important:
- The CSS only affects the internal content of the form
- To style the outer container (when used as a widget), this is done via code (options), not via customStyle
Before styling, you need to understand how the HTML is organized.
.default-container-wrapper
Outer form container.
.default-container-wrapper {
display: flex;
flex-direction: column;
justify-content: space-between;
min-height: 100vh;
}
.default-container-content
Inner content container.
.default-container-content {
width: 100%;
padding-right: 15px;
padding-left: 15px;
}
Each page has a dynamic ID:
#pageId-1#pageId-2#pageId-3
You can style a specific page:
#pageId-1 {
background: #f5f5f5;
}
.column-wrapper — Outer column container
.column — Inner column
Dynamic border classes:
.rounded.rounded-left.rounded-right
Example:
.column-wrapper {
padding: 20px !important;
}
.rounded-left {
border-top-left-radius: 16px;
}
Each question has this structure:
.wrapper-form-question
├── .question
├── .description
└── .wrapperComponent
.wrapper-form-question
Main question class:
.wrapper-form-question {
background: white;
border-radius: 12px;
padding: 20px !important;
}
When required and invalid:
.invalid-feedback-warning {
border: 1px solid red;
}
Also receives: .required-field
.question
Default style:
.wrapper-form-question .question {
font-size: 20px;
font-weight: 900;
}
Custom example:
.wrapper-form-question .question {
font-size: 24px !important;
color: #1E3A8A !important;
font-weight: 700 !important;
}
.description
Default:
.wrapper-form-question .description {
font-size: 16px;
font-weight: 700;
}
Customization:
.wrapper-form-question .description {
font-size: 14px;
color: #6B7280;
}
.wrapperComponent
Where the actual input is rendered.
.wrapperComponent {
margin-top: 10px;
}
Below are the main available component types:
- NumericButtonComponent
- EmojiComponent
- LikeDislikeComponent
- ButtonSelectComponent
- SimpleTextComponent
- NumbersComponent
- FreeTextComponent
- ImageComponent
- RadioButtonComponent
- ParentGroupComponent
- AutoCompleteComponent
- ParameterQuestionComponent
.button-select
.buttonSingleSelect
Example:
.button-select {
border-radius: 8px !important;
padding: 12px !important;
font-size: 16px;
}
.score-button-gap
Controls spacing:
.score-button-gap {
margin-right: 10px !important;
}
.form-footer
Footer container.
.form-footer {
background: #F9FAFB;
padding: 20px !important;
}
.steps-control-buttons
.send-form-button
Default size:
.form-footer .steps-control-buttons,
.form-footer .send-form-button {
min-width: 136px;
max-width: 136px;
}
Mobile default:
@media (max-width: 575px) {
.form-footer .steps-control-buttons,
.form-footer .send-form-button {
width: 100%;
}
}
.form-card-body
.form-card-body {
border: 1px solid var(--secondary);
}
You can remove it:
.form-card-body {
border: none !important;
}
If using SurveyCard:
.survey-card.survey-card-none.primary.secondary
Example:
.survey-card {
border-radius: 20px;
}
.survey-card .primary {
background: #111827;
color: white;
}
Flex uses Bootstrap 4.
You can use:
.btn.form-control.row.col-*.d-flex.justify-content-*.align-items-*.p-*.m-*
Example:
.btn {
border-radius: 10px !important;
}
Below are complete examples you can copy and paste directly into the Form Structure > Custom Style field.
Applies rounded corners to all main form elements, creating a soft and modern look.
.form-card-body {
border-radius: 24px !important;
}
.wrapper-form-question {
border-radius: 16px !important;
}
.button-select {
border-radius: 50px !important;
}
.form-control {
border-radius: 12px !important;
}
.form-footer .send-form-button,
.form-footer .steps-control-buttons {
border-radius: 50px !important;
}
.column-wrapper .rounded {
border-radius: 20px !important;
}
Removes all rounding for a more formal and institutional look.
.form-card-body {
border-radius: 0 !important;
}
.wrapper-form-question {
border-radius: 0 !important;
}
.button-select {
border-radius: 0 !important;
}
.form-control {
border-radius: 0 !important;
}
.form-footer .send-form-button,
.form-footer .steps-control-buttons {
border-radius: 0 !important;
}
Transforms the form into an elegant dark theme.
.default-container-wrapper {
background: #0f172a !important;
}
.form-card-body {
background: #1e293b !important;
border: 1px solid #334155 !important;
border-radius: 16px !important;
}
.wrapper-form-question {
background: #1e293b !important;
border-radius: 12px !important;
}
.wrapper-form-question .question {
color: #f1f5f9 !important;
}
.wrapper-form-question .description {
color: #94a3b8 !important;
}
.button-select {
background: #334155 !important;
border: 1px solid #475569 !important;
color: #e2e8f0 !important;
border-radius: 10px !important;
}
.button-select:hover {
background: #3b82f6 !important;
border-color: #3b82f6 !important;
color: #ffffff !important;
}
.form-control {
background: #334155 !important;
border: 1px solid #475569 !important;
color: #f1f5f9 !important;
border-radius: 10px !important;
}
.form-footer {
background: transparent !important;
}
.form-footer .send-form-button {
background: #3b82f6 !important;
border: none !important;
border-radius: 10px !important;
color: #ffffff !important;
}
.form-footer .send-form-button:hover {
background: #2563eb !important;
}
Lightweight interface, no borders, with plenty of white space.
.default-container-wrapper {
background: #ffffff !important;
}
.form-card-body {
border: none !important;
box-shadow: none !important;
background: #ffffff !important;
padding: 40px !important;
}
.wrapper-form-question {
background: transparent !important;
border-radius: 0 !important;
padding: 20px 0 !important;
border-bottom: 1px solid #e5e7eb !important;
box-shadow: none !important;
}
.wrapper-form-question .question {
font-size: 18px !important;
font-weight: 600 !important;
color: #111827 !important;
}
.wrapper-form-question .description {
font-size: 14px !important;
color: #9ca3af !important;
}
.button-select {
border: 1px solid #e5e7eb !important;
background: transparent !important;
border-radius: 8px !important;
font-size: 14px !important;
}
.button-select:hover {
background: #111827 !important;
color: #ffffff !important;
border-color: #111827 !important;
}
.form-control {
border: none !important;
border-bottom: 2px solid #e5e7eb !important;
border-radius: 0 !important;
padding: 12px 0 !important;
background: transparent !important;
}
.form-control:focus {
border-bottom-color: #111827 !important;
box-shadow: none !important;
}
.form-footer .send-form-button {
background: #111827 !important;
border: none !important;
border-radius: 8px !important;
font-weight: 500 !important;
}
Style inspired by Material Design with shadows and card elevation.
.default-container-wrapper {
background: #f5f5f5 !important;
}
.form-card-body {
border: none !important;
border-radius: 8px !important;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1) !important;
background: #ffffff !important;
padding: 32px !important;
}
.wrapper-form-question {
background: #ffffff !important;
border-radius: 8px !important;
padding: 24px !important;
margin-bottom: 16px !important;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08), 0 1px 2px rgba(0, 0, 0, 0.06) !important;
transition: box-shadow 0.2s ease !important;
}
.wrapper-form-question:hover {
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12) !important;
}
.wrapper-form-question .question {
font-size: 16px !important;
font-weight: 500 !important;
color: #212121 !important;
letter-spacing: 0.15px !important;
}
.wrapper-form-question .description {
font-size: 14px !important;
color: #757575 !important;
}
.button-select {
border-radius: 4px !important;
border: 1px solid #e0e0e0 !important;
background: #fafafa !important;
font-size: 14px !important;
transition: all 0.15s ease !important;
}
.button-select:hover {
background: #1976d2 !important;
color: #ffffff !important;
border-color: #1976d2 !important;
box-shadow: 0 2px 8px rgba(25, 118, 210, 0.3) !important;
}
.form-control {
border-radius: 4px !important;
border: 1px solid #e0e0e0 !important;
}
.form-control:focus {
border-color: #1976d2 !important;
box-shadow: 0 0 0 2px rgba(25, 118, 210, 0.2) !important;
}
.form-footer .send-form-button {
background: #1976d2 !important;
border: none !important;
border-radius: 4px !important;
font-weight: 500 !important;
text-transform: uppercase !important;
letter-spacing: 0.5px !important;
box-shadow: 0 2px 4px rgba(25, 118, 210, 0.3) !important;
}
.form-footer .send-form-button:hover {
background: #1565c0 !important;
box-shadow: 0 4px 8px rgba(25, 118, 210, 0.4) !important;
}
Gradient background with vibrant colors for brands that want to stand out.
.default-container-wrapper {
background: linear-gradient(135deg, #667eea, #764ba2) !important;
}
.form-card-body {
background: rgba(255, 255, 255, 0.95) !important;
border: none !important;
border-radius: 20px !important;
box-shadow: 0 20px 60px rgba(0, 0, 0, 0.15) !important;
padding: 40px !important;
}
.wrapper-form-question {
background: #ffffff !important;
border-radius: 16px !important;
padding: 24px !important;
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.05) !important;
}
.wrapper-form-question .question {
font-size: 20px !important;
font-weight: 700 !important;
color: #1a1a2e !important;
}
.wrapper-form-question .description {
color: #6b7280 !important;
}
.button-select {
border-radius: 12px !important;
border: 2px solid #e0e7ff !important;
background: #f0f4ff !important;
font-weight: 500 !important;
transition: all 0.2s ease !important;
}
.button-select:hover {
background: linear-gradient(135deg, #667eea, #764ba2) !important;
color: #ffffff !important;
border-color: transparent !important;
}
.form-control {
border-radius: 12px !important;
border: 2px solid #e0e7ff !important;
}
.form-control:focus {
border-color: #667eea !important;
box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.2) !important;
}
.form-footer .send-form-button {
background: linear-gradient(135deg, #667eea, #764ba2) !important;
border: none !important;
border-radius: 12px !important;
font-weight: 600 !important;
box-shadow: 0 4px 15px rgba(102, 126, 234, 0.4) !important;
}
.form-footer .send-form-button:hover {
box-shadow: 0 6px 20px rgba(102, 126, 234, 0.5) !important;
transform: translateY(-1px);
}
Increases fonts and spacing for better readability and accessibility.
.wrapper-form-question .question {
font-size: 28px !important;
font-weight: 800 !important;
line-height: 1.3 !important;
color: #1e293b !important;
margin-bottom: 12px !important;
}
.wrapper-form-question .description {
font-size: 18px !important;
font-weight: 400 !important;
line-height: 1.6 !important;
color: #475569 !important;
margin-bottom: 20px !important;
}
.button-select {
font-size: 18px !important;
padding: 16px 24px !important;
border-radius: 12px !important;
min-height: 56px !important;
}
.form-control {
font-size: 18px !important;
padding: 16px !important;
border-radius: 12px !important;
min-height: 56px !important;
}
.form-footer .send-form-button {
font-size: 18px !important;
padding: 16px 32px !important;
border-radius: 12px !important;
min-height: 56px !important;
}
.wrapper-form-question {
padding: 32px !important;
margin-bottom: 24px !important;
}
Adds a colored side border to question cards for visual emphasis.
.wrapper-form-question {
background: #ffffff !important;
border-radius: 0 12px 12px 0 !important;
border-left: 4px solid #3b82f6 !important;
padding: 24px !important;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06) !important;
}
.wrapper-form-question .question {
font-size: 18px !important;
font-weight: 700 !important;
color: #1e293b !important;
}
.wrapper-form-question .description {
font-size: 14px !important;
color: #64748b !important;
}
.form-card-body {
border: none !important;
border-radius: 16px !important;
background: #f8fafc !important;
}
.button-select {
border-radius: 8px !important;
border: 1px solid #cbd5e1 !important;
background: #ffffff !important;
}
.button-select:hover {
background: #3b82f6 !important;
color: #ffffff !important;
border-color: #3b82f6 !important;
}
.form-footer .send-form-button {
background: #3b82f6 !important;
border: none !important;
border-radius: 8px !important;
}
.invalid-feedback-warning {
border-left: 4px solid #ef4444 !important;
border-color: #ef4444 !important;
background: #fef2f2 !important;
}
Inspect elements to confirm classes.
CSS is injected into the iframe and may need to override existing rules.
The form has responsive behavior.
| Element | Class |
|---|
| Question container | .wrapper-form-question |
| Title | .question |
| Description | .description |
| Selection button | .button-select |
| Score buttons | .score-button-gap |
| Footer | .form-footer |
| Submit button | .send-form-button |
| Column | .column-wrapper |
| Page | #pageId-{n} |