Skip to main content

How to Customize App Blocks with CSS

Updated this week

How to Customize App Blocks with CSS

Reviewsion’s theme blocks ship with a semantic BEM structure and a configurable color palette so you can override styles exactly where you need them. This guide shows you how to write CSS overrides—either in your theme’s stylesheet or the section-level Custom CSS field—to style your blocks without extra build steps.

Why are there so few color settings in the blocks' settings?

Reviewsion aims to be as low-configuration as possible and is ready for most themes out-of-the-box. All blocks are designed to automatically generate their colors based on your color palette, located in Reviewsion's app settings.

Different elements of the same type are often based on a single color in your palette, such as "text". A heading might be bold while a subheading might be lighter and more subdued.

This should be perfect for shops that don't want to spend time configuring while still looking great from start; If you need more customization however, with a little more effort you can have fine-grained control.

Prerequisites

  • Familiarity with CSS (selectors, specificity, variables)

  • Access to your theme’s code editor or the section’s Custom CSS textarea in the Shopify theme editor

  • The Reviewsion block added to a page for inspection

Section-Level Custom CSS

All Reviewsion app blocks come with a consistent set of outer-most CSS classes, all lower-case

/* All blocks */
.rvsn
.rvsn-theme-block
.rvsn-theme-block__<name-of-block>

/* Only the Heading block */
.rvsn-heading


Many Shopify themes expose a Custom CSS box in each section’s settings. Styles added here only affect that block. Example:


/* Change slide padding for this Testimonials Carousel section */
.rvsn-TestimonialsCarousel__Slide {
padding: 2rem;
}

Finding the Right Selectors

Every Reviewsion block uses:

  • Base class: rvsn-ComponentName

  • Element: rvsn-ComponentName__ElementName

Inspect your block in DevTools to confirm exact names. For example:

.rvsn-FilteredReviewsWidget { /* root */ }
.rvsn-FilteredReviewsWidget__ReadMore { /* “Read more” link */}

Overriding Colors

Reviewsion exposes a set of light/dark CSS variables that are automatically generated from color palette selections in Reviewsion's app settings.

Located in the <head>, they will look similar to this

<style id="rvsn-color-theme-styles">
[rvsn-theme-mode="light"] {
--rvsn-text-0: 0 0% 100%;
--rvsn-text-50: 0 0% 95%;
--rvsn-text-100: 0 0% 90%;
--rvsn-text-200: 0 0% 80%;
--rvsn-text-300: 0 0% 70%;
--rvsn-text-400: 0 0% 60%;
--rvsn-text-500: 0 0% 50%;
--rvsn-text-600: 0 0% 40%;
--rvsn-text-700: 0 0% 30%;
--rvsn-text-800: 0 0% 20%;
--rvsn-text-900: 0 0% 10%;
--rvsn-text-950: 0 0% 5%;
--rvsn-text-1000: 0 0% 0%;

--rvsn-background-0: 0 0% 100%;
--rvsn-background-50: 0 0% 95%;
--rvsn-background-100: 0 0% 90%;
--rvsn-background-200: 0 0% 80%;
--rvsn-background-300: 0 0% 70%;
--rvsn-background-400: 0 0% 60%;
--rvsn-background-500: 0 0% 50%;
--rvsn-background-600: 0 0% 40%;
--rvsn-background-700: 0 0% 30%;
--rvsn-background-800: 0 0% 20%;
--rvsn-background-900: 0 0% 10%;
--rvsn-background-950: 0 0% 5%;
--rvsn-background-1000: 0 0% 0%;

--rvsn-primary-0: 50 87% 100%;
--rvsn-primary-50: 50 87% 95%;
--rvsn-primary-100: 50 87% 90%;
--rvsn-primary-200: 50 87% 80%;
--rvsn-primary-300: 50 87% 70%;
--rvsn-primary-400: 50 87% 60%;
--rvsn-primary-500: 50 87% 50%;
--rvsn-primary-600: 50 87% 40%;
--rvsn-primary-700: 50 87% 30%;
--rvsn-primary-800: 50 87% 20%;
--rvsn-primary-900: 50 87% 10%;
--rvsn-primary-950: 50 87% 5%;
--rvsn-primary-1000: 50 87% 0%;

--rvsn-secondary-0: 189 55% 100%;
--rvsn-secondary-50: 189 55% 95%;
--rvsn-secondary-100: 189 55% 90%;
--rvsn-secondary-200: 189 55% 80%;
--rvsn-secondary-300: 189 55% 70%;
--rvsn-secondary-400: 189 55% 60%;
--rvsn-secondary-500: 189 55% 50%;
--rvsn-secondary-600: 189 55% 40%;
--rvsn-secondary-700: 189 55% 30%;
--rvsn-secondary-800: 189 55% 20%;
--rvsn-secondary-900: 189 55% 10%;
--rvsn-secondary-950: 189 55% 5%;
--rvsn-secondary-1000: 189 55% 0%;

--rvsn-accent-0: 238 88% 100%;
--rvsn-accent-50: 238 88% 95%;
--rvsn-accent-100: 238 88% 90%;
--rvsn-accent-200: 238 88% 80%;
--rvsn-accent-300: 238 88% 70%;
--rvsn-accent-400: 238 88% 60%;
--rvsn-accent-500: 238 88% 50%;
--rvsn-accent-600: 238 88% 40%;
--rvsn-accent-700: 238 88% 30%;
--rvsn-accent-800: 238 88% 20%;
--rvsn-accent-900: 238 88% 10%;
--rvsn-accent-950: 238 88% 5%;
--rvsn-accent-1000: 238 88% 0%;

--rvsn-skeleton: hsla(var(--rvsn-text-100) / 0.7);
--rvsn-skeleton-2: hsla(var(--rvsn-text-100) / 0.5);
}

[rvsn-theme-mode="dark"] {
--rvsn-text-0: 0 0% 0%;
--rvsn-text-50: 0 0% 5%;
--rvsn-text-100: 0 0% 10%;
--rvsn-text-200: 0 0% 20%;
--rvsn-text-300: 0 0% 30%;
--rvsn-text-400: 0 0% 40%;
--rvsn-text-500: 0 0% 50%;
--rvsn-text-600: 0 0% 60%;
--rvsn-text-700: 0 0% 70%;
--rvsn-text-800: 0 0% 80%;
--rvsn-text-900: 0 0% 90%;
--rvsn-text-950: 0 0% 95%;
--rvsn-text-1000: 0 0% 100%;

--rvsn-background-0: 0 0% 0%;
--rvsn-background-50: 0 0% 5%;
--rvsn-background-100: 0 0% 10%;
--rvsn-background-200: 0 0% 20%;
--rvsn-background-300: 0 0% 30%;
--rvsn-background-400: 0 0% 40%;
--rvsn-background-500: 0 0% 50%;
--rvsn-background-600: 0 0% 60%;
--rvsn-background-700: 0 0% 70%;
--rvsn-background-800: 0 0% 80%;
--rvsn-background-900: 0 0% 90%;
--rvsn-background-950: 0 0% 95%;
--rvsn-background-1000: 0 0% 100%;

--rvsn-primary-0: 47 100% 0%;
--rvsn-primary-50: 47 100% 5%;
--rvsn-primary-100: 47 100% 10%;
--rvsn-primary-200: 47 100% 20%;
--rvsn-primary-300: 47 100% 30%;
--rvsn-primary-400: 47 100% 40%;
--rvsn-primary-500: 47 100% 50%;
--rvsn-primary-600: 47 100% 60%;
--rvsn-primary-700: 47 100% 70%;
--rvsn-primary-800: 47 100% 80%;
--rvsn-primary-900: 47 100% 90%;
--rvsn-primary-950: 47 100% 95%;
--rvsn-primary-1000: 47 100% 100%;

--rvsn-secondary-0: 189 55% 0%;
--rvsn-secondary-50: 189 55% 5%;
--rvsn-secondary-100: 189 55% 10%;
--rvsn-secondary-200: 189 55% 20%;
--rvsn-secondary-300: 189 55% 30%;
--rvsn-secondary-400: 189 55% 40%;
--rvsn-secondary-500: 189 55% 50%;
--rvsn-secondary-600: 189 55% 60%;
--rvsn-secondary-700: 189 55% 70%;
--rvsn-secondary-800: 189 55% 80%;
--rvsn-secondary-900: 189 55% 90%;
--rvsn-secondary-950: 189 55% 95%;
--rvsn-secondary-1000: 189 55% 100%;

--rvsn-accent-0: 104 55% 0%;
--rvsn-accent-50: 104 55% 5%;
--rvsn-accent-100: 104 55% 10%;
--rvsn-accent-200: 104 55% 20%;
--rvsn-accent-300: 104 55% 30%;
--rvsn-accent-400: 104 55% 40%;
--rvsn-accent-500: 104 55% 50%;
--rvsn-accent-600: 104 55% 60%;
--rvsn-accent-700: 104 55% 70%;
--rvsn-accent-800: 104 55% 80%;
--rvsn-accent-900: 104 55% 90%;
--rvsn-accent-950: 104 55% 95%;
--rvsn-accent-1000: 104 55% 100%;

--rvsn-skeleton: hsla(var(--rvsn-text-100) / 0.7);
--rvsn-skeleton-2: hsla(var(--rvsn-text-100) / 0.5);
}
</style>

---

Overriding colors for all blocks

If your goal is to use CSS to change colors for all Reviewsion blocks, you want to add custom CSS to a .css file.

Overriding colors for some blocks
If your goal is to use CSS to change colors for a single Reviewsion block, or all blocks within a single theme App section, you want to add css to a "Custom CSS" setting in your theme's App section.

Changing the color variables values

CSS variable color values must be in HSL format. Hex format will not work.

/* Change the value of text-800 in light mode to green */
[rvsn-theme-mode="light"] {
--rvsn-text-800: 120 100% 50%;
}

/* Change the value of text-800 in dark mode to green */
[rvsn-theme-mode="dark"] {
--rvsn-text-800: 120 100% 50%;
}

Changing the color of an element

/* 
* Change the Product Carousel reviewer name color.
* Here, you're not changing a CSS variable, so you can use
* whatever color format you want.
*
* If you don't specify dark mode, this will change the default
* light-mode color.
*/
.rvsn-CarouselCard .rvsn-Name {
color: green;
}

/*
* You don't need to specify light-mode, but if you do, it will
* do the same thing.
*/
[rvsn-theme-mode="light"] .rvsn-CarouselCard .rvsn-Name {
color: blue;
}

/*
* If you want the dark theme version to be a different color,
* specify dark mode like this
*/
[rvsn-theme-mode="dark"] .rvsn-CarouselCard .rvsn-Name {
color: blue;
}
Did this answer your question?