Skip to main content

How to Customize the Buy More Save More Product Page Widget with CSS

Customize the Buy More Save More product page widget with CSS: where to add scoped CSS, the widget's class names and design tokens, and copy-paste recipes for tier cards, the progress bar, subscription tabs, hiding elements, and mobile tweaks.

Written by Tom

Overview

The Buy More Save More (BMSM) widget can be styled beyond the built-in options using CSS. This guide shows where to add your CSS, lists the widget's real class names, and gives copy-paste recipes for the most common customizations. Use it when the Styles panel's color pickers and layout options don't cover a change you need.

Before writing CSS, try the Styles panel first (in the widget editor: Styles → Theme → Custom). It exposes color and radius controls for most elements without any code. Reach for CSS only for changes the panel can't make — spacing, typography, hiding elements, or responsive tweaks.


Where to add your CSS

Add your CSS in the widget editor under Styles → add your CSS code to the CSS code editor box, click Save.

Important: The CSS you enter in this field is applied globally to the page, not only inside the widget. Always scope your rules to the widget so you don't accidentally restyle the rest of the product page. Scope every rule with the widget's root class:

.rebuy-buy-more-save-more {   /* your rules */ }

To target one specific widget instance (if you run more than one), use its ID instead, where WIDGET_ID is the ID shown on the Install page:

#rebuy-widget-WIDGET_ID {   /* rules for this widget only */ }

Because themes vary in specificity, you may occasionally need !important to make a rule win over a theme style. Add it only when a rule doesn't take effect otherwise.

Preview your changes on the real storefront using Storefront Preview Mode (add ?preview=true to your product URL) before turning the widget live.


The widget's structure (class name reference)

Every widget element uses the BEM prefix rebuy-buy-more-save-more. The root element also carries rebuy-buy-more-save-more__widget and rebuy-widget. The layout in use is reflected on a wrapper class, so you can target styles per layout.

Root and layout

Element

Class

Widget root

.rebuy-buy-more-save-more

Layout wrapper

.rebuy-buy-more-save-more__layout (modifier --vertical, --horizontal, or --progress_bar)

Header wrapper

.rebuy-buy-more-save-more__header

Super title

.rebuy-buy-more-save-more__header-super-title

Title

.rebuy-buy-more-save-more__header-title

Description

.rebuy-buy-more-save-more__header-description

Main content

.rebuy-buy-more-save-more__main

Tier cards (Vertical and Horizontal layouts)

Element

Class

Tier list container

.rebuy-buy-more-save-more__blocks-container (modifier --vertical / --horizontal, plus alignment --align-left / --align-center / --align-right, and container-length-1container-length-6)

A single tier card

.rebuy-buy-more-save-more__block (--0, --1, … per tier; --active on the selected one)

Tier image

.rebuy-buy-more-save-more__block-info-image-img

Tier title

.rebuy-buy-more-save-more__block-info-title

Tier description

.rebuy-buy-more-save-more__block-info-description

Price

.rebuy-buy-more-save-more__block-info-price

Compare-at (crossed-out) price

.rebuy-buy-more-save-more__block-info-compare-at-price

Per-unit price

.rebuy-buy-more-save-more__block-info-unit

Radio input (when enabled)

.rebuy-buy-more-save-more__radio-input

Progress Bar layout (labeled "Slider" in the editor)

Element

Class

Slider container

.rebuy-buy-more-save-more__dragger-container

Tier labels row

.rebuy-buy-more-save-more__dragger-labels (alignment --align-left / --align-center / --align-right)

A single tier label

.rebuy-buy-more-save-more__dragger-label (--active for reached tiers)

Tier image (circular)

.rebuy-buy-more-save-more__dragger-image-img

Image/title order wrapper

.rebuy-buy-more-save-more__dragger-image-title-container (--above / --below)

Progress track (background)

.rebuy-buy-more-save-more__dragger-track-container

Progress fill

.rebuy-buy-more-save-more__dragger-track-fill

Slider handle

input[type="range"] (thumb via ::-webkit-slider-thumb / ::-moz-range-thumb)

Subscription (purchase-type) tabs

Element

Class

Container

.rebuy-buy-more-save-more__subscribe-and-save-container (--side_by_side / --stacked, --above / --below)

Tabs row

.rebuy-buy-more-save-more__purchase-type-tabs

A tab

.rebuy-buy-more-save-more__purchase-type-tab (--subscribe / --one-time; --active on the selected)

Tab title

.rebuy-buy-more-save-more__purchase-type-tab-title

Frequency dropdown

.rebuy-buy-more-save-more__subscription-frequency-select

Bundle-exclusion note

.rebuy-buy-more-save-more__excluded-bundle-discount-text

Note on the Add to Cart button: The widget does not render its own Add to Cart button — it works with your theme's native Add to Cart button, and the shopper's quantity is set by the selected tier. While the widget is active, Rebuy adds the class rebuy-buy-more-save-more-active to the page's <body> and hides the theme's quantity selector. Style the Add to Cart button through your theme, not this widget.


Design tokens (CSS variables)

Several colors are driven by CSS custom properties, which the Styles panel sets for you. You can also override them directly in CSS. Setting a token restyles both the tier cards and the subscription tabs at once, which is usually cleaner than targeting each element.

CSS variable

Controls

--rb-widget-option-background

Tier card / tab background (unselected)

--rb-widget-option-border-color

Tier card / tab border (unselected)

--rb-widget-option-selected-background

Selected tier card / tab background

--rb-widget-option-selected-color

Selected tier / tab accent (border, radio, active slider ring)

--rb-widget-progress-bar-fill

Filled portion of the Progress Bar (Slider)

--rb-widget-progress-bar-track

Unfilled track of the Progress Bar (Slider)

Example — set all option colors at once:

.rebuy-buy-more-save-more {   
--rb-widget-option-background: #f7f7f7;
--rb-widget-option-border-color: #e3e3e3;
--rb-widget-option-selected-background: #eef6fb;
--rb-widget-option-selected-color: #2491c4;
}


Common customizations

Each recipe below is scoped to the widget. Paste it into the CSS field and adjust the values.

Restyle the tier cards (unselected and selected). This changes the border, background, and corner radius of each tier option.

.rebuy-buy-more-save-more__block {
border-color: #e3e3e3;
background: #ffffff;
border-radius: 12px;
}
.rebuy-buy-more-save-more__block--active {
border-color: #2491c4;
background: #eef6fb;
}

Recolor the progress bar (Slider layout). This sets the filled and unfilled portions of the bar.

.rebuy-buy-more-save-more {
--rb-widget-progress-bar-fill: #2491c4;
--rb-widget-progress-bar-track: #ececec;
}

Change the title size and color.

.rebuy-buy-more-save-more__header-title {
font-size: 22px;
color: #232323;
}

Adjust the widget's width and outer spacing. The widget is centered with a max width by default; change or remove the cap here.

.rebuy-buy-more-save-more {
max-width: 100%;
padding: 20px;
}

Increase spacing between tier cards.

.rebuy-buy-more-save-more__blocks-container--vertical,
.rebuy-buy-more-save-more__blocks-container--horizontal {
gap: 16px;
}

Style the subscription tabs.

.rebuy-buy-more-save-more__purchase-type-tab {
border-radius: 12px;
}
.rebuy-buy-more-save-more__purchase-type-tab--active {
border-color: #2491c4;
background: #eef6fb;
}

Hide the per-unit price on every tier. Use this if you don't want unit pricing shown. (You can also turn off Show per unit price per tier in the editor.)

.rebuy-buy-more-save-more__block-info-unit {
display: none;
}

Hide the tier description text.

.rebuy-buy-more-save-more__block-info-description {
display: none;
}

Make a mobile-only adjustment. Wrap rules in a media query to target small screens.

@media (max-width: 767px) {
.rebuy-buy-more-save-more__header-title {
font-size: 18px;
}
}

Hide a leftover third-party subscription widget. Rebuy already hides the common subscription apps while the widget is active. If a subscription control from another app still shows on your product page, target it while BMSM is active. Replace the selector with the one from your app.

.rebuy-buy-more-save-more-active .your-subscription-widget-selector {
display: none !important;
}


Tips and troubleshooting

  • Always scope to the widget. Start every rule with .rebuy-buy-more-save-more (or #rebuy-widget-WIDGET_ID) so you don't restyle the rest of the product page — the CSS field applies globally.

  • Prefer the design tokens (the --rb-widget-* variables) for colors that repeat across tiers and tabs; it's less code and stays consistent.

  • Test in Storefront Preview Mode (?preview=true) on a real product page before going live.

  • Custom templates aren't previewable in the editor. If your widget uses a custom template, the in-editor preview won't reflect your CSS — preview onsite instead.

  • Heavy or theme-level custom work (structural layout changes, JavaScript-driven behavior) is outside standard support scope. For that, we can refer you to a Rebuy Partner agency.

Did this answer your question?