LanderLab lets you design quizzes visually, but if you need more control, you can use Custom CSS to style your quiz beyond the built-in settings. This is useful when you want to fine-tune the appearance of quiz elements or apply styles that are not available in the editor.Documentation Index
Fetch the complete documentation index at: https://docs.landerlab.io/llms.txt
Use this file to discover all available pages before exploring further.
How it works
LanderLab lets you inject custom CSS into your flow. Your CSS is automatically scoped inside the.ll-quiz root container, so styles only affect your quiz and never bleed into the rest of the page.
Where to add CSS

.ll-quiz — you don’t need to prefix anything.
Scoping rules
All your CSS lives inside.ll-quiz. Theme variables (like --colorPrimary) are read-only — they’re set by the theme engine and can’t be overridden. To change how something looks, write regular CSS rules targeting the selectors described in this guide.
✓ Do this
Selector reference
Use these selectors to target the elements you want to style. All of them are scoped inside.ll-quiz automatically.
Layout & structure
.ll-quiz-step All steps (visible + hidden) .ll-quiz-step[data-active-step=“true”] Only the currently visible step .ll-quiz-header Fixed top header area .ll-quiz-footer Fixed bottom footer area .ll-quiz-block Every block, any type .ll-quiz-block—[type] A specific block type (e.g.--text-field)
Inputs
.ll-quiz-block__input All text inputs and selects .ll-quiz-block__input-wrapper Wrapper div around inputs .ll-quiz-block__label Field labels .ll-quiz-block__decorator Prefix / suffix icons or textButtons
.ll-quiz-continue-button Continue button .ll-quiz-previous-button Previous / back button .ll-quiz-submit-button Submit button .ll-quiz-default-button Generic action button .ll-quiz-button-text Label inside any button .ll-quiz-button-description Sub-label inside any buttonChoice blocks
.ll-choice-option A single multiple-choice option .ll-choice-option:has(input:checked) A selected option .ll-choice-option__text Text label inside an option .ll-img-choice-option An image choice option card .ll-img-choice-option:has(input:checked) Selected image choice card .ll-choice-label Choice block group labelProgress & feedback
.ll-quiz-progress__fill The filled bar portion .ll-quiz-header__progress-fill Header progress bar fill .ll-quiz-block—has-error A block that failed validation .ll-quiz-block-error The error message text .ll-quiz-variable Dynamic variables in text (e.g. first name)Input fields
All text inputs, selects, textareas, and similar fields share the same class structure. Target.ll-quiz-block__input to style them all at once, or narrow by block type for individual control.
Style all input fields
CSSTarget a specific block by ID
Find the block ID from the URL when editing a block in LanderLab (e.g.text-field-abc123).
Style prefix / suffix decorators
Labels
Buttons
Buttons in LanderLab render as<a> elements, not <button>. Use the specific selector for each button type, or target all buttons at once with a shared class.
Continue button
Previous button
Submit button
Style all buttons at once
Button sub-label (description)
Choice blocks
Multiple-choice and image-choice options can be styled in their default, hover, and selected states.Style options
Image choice cards
Hide the radio / checkbox icon
Progress bars
There are two progress bar locations — one inline in steps, and one in the header. Style them independently or together.Inline progress bar
Header progress bar
Responsive design
LanderLab uses CSS container queries, not media queries. Always use the container syntax below — standard@media queries won’t work as expected inside the quiz container.
The breakpoint is 490px: anything wider is treated as desktop, anything narrower as mobile.
Container query syntax
@container quiz-container (...) instead of @media (...). The quiz is a container component and media queries won’t reflect its actual width.
States & validation
When a field fails validation, it receives the class.ll-quiz-block--has-error. Use this to style error states consistently with your design.
Error styling
Dynamic text variables
Text blocks can include live variables like{{firstName}} that update as the user types. These render as .ll-quiz-variable spans.
Full examples
Paste any of these into your Custom CSS panel to get started quickly.Example 1 — Clean minimal theme
Example 2 — Rounded colorful theme
Example 3 — Mobile-first layout adjustments
Block type class list
Use these modifiers on.ll-quiz-block to target individual block types.
| Modifier class | Block type |
|---|---|
.ll-quiz-block--text-field | Text input |
.ll-quiz-block--email-field | Email input |
.ll-quiz-block--phone-number-field | Phone input |
.ll-quiz-block--number-field | Number input |
.ll-quiz-block--textarea-field | Textarea |
.ll-quiz-block--select-field | Dropdown select |
.ll-quiz-block--date-field | Date picker |
.ll-quiz-block--checkbox-field | Checkbox |
.ll-quiz-block--range-slider | Range slider |
.ll-quiz-block--multiple-choice | Multiple choice |
.ll-quiz-block--image-choice | Image choice |
.ll-quiz-block--continue | Continue button |
.ll-quiz-block--submit | Submit button |
.ll-quiz-block--headline | Headline text |
.ll-quiz-block--paragraph | Paragraph text |
.ll-quiz-block--progress | Progress bar |
.ll-quiz-block--accordion | Accordion |
.ll-quiz-block--countdown | Countdown timer |