Styles
Customize the widget appearance with CSS custom properties (variables).
Visual appearance is fully customizable through CSS custom properties defined on the .rs root element. Override any variable in your own stylesheet to change colors, sizes, spacing, and animations — no need to touch the widget source or add extra build steps.
Container
| Variable | Default |
|---|---|
--rs-container-offset-x | 24px |
--rs-container-offset-y | 24px |
--rs-container-z-index | 10 |
Video container
| Variable | Default |
|---|---|
--rs-video-container-size-xs | 156px |
--rs-video-container-size-sm | 192px |
--rs-video-container-size-md | 352px |
--rs-video-container-size-lg | 448px |
--rs-video-container-size-xl | 544px |
--rs-video-container-size-xxl | 640px |
--rs-video-container-background | white |
--rs-video-container-border | none |
--rs-video-container-border-radius | 8px |
--rs-video-container-shadow | 0 0 20px rgba(0, 0, 0, 0.2) |
--rs-video-container-transition | all 0.3s ease-in-out |
--rs-video-container-overflow | hidden |
Video
| Variable | Default |
|---|---|
--rs-video-border-radius | 8px |
Video loader
| Variable | Default |
|---|---|
--rs-video-loader-size-xs | 24px |
--rs-video-loader-size-sm | 32px |
--rs-video-loader-size-md | 48px |
--rs-video-loader-size-lg | 64px |
--rs-video-loader-size-xl | 80px |
--rs-video-loader-size-xxl | 96px |
--rs-video-loader-fill | white |
--rs-video-loader-animation | 0.75s infinite linear |
Video progress
| Variable | Default |
|---|---|
--rs-video-progress-track-color | rgba(255, 255, 255, 0.2) |
--rs-video-progress-buffer-color | rgba(255, 255, 255, 0.4) |
--rs-video-progress-progress-color | rgb(255, 255, 255) |
--rs-video-progress-border-radius | 0 |
Video controls
| Variable | Default |
|---|---|
--rs-video-controls-drop-shadow | drop-shadow(0 0 10px rgba(0, 0, 0, 0.5)) |
--rs-video-controls-transition | all 0.3s ease |
--rs-video-controls-transform | scale(1.1) |
--rs-video-controls-z-index | 20 |
Video volume
| Variable | Default |
|---|---|
--rs-video-volume-drop-shadow | drop-shadow(0 0 10px rgba(0, 0, 0, 0.5)) |
--rs-video-volume-transition | all 0.3s ease |
--rs-video-volume-transform | scale(1.1) |
--rs-video-volume-z-index | 20 |
CTA button
| Variable | Default |
|---|---|
--rs-cta-button-color | rgb(255, 255, 255) |
--rs-cta-button-background | rgb(0, 0, 0) |
--rs-cta-button-background-hover | color-mix(in srgb, rgb(0, 0, 0) 80%, transparent) |
--rs-cta-button-background-pressed | color-mix(in srgb, rgb(0, 0, 0) 60%, transparent) |
--rs-cta-button-shadow | 0 0 20px rgba(0, 0, 0, 0.2) |
--rs-cta-button-transition | all 0.3s ease |
--rs-cta-button-z-index | 20 |
Close button
| Variable | Default |
|---|---|
--rs-close-button-color | rgb(255, 255, 255) |
--rs-close-button-background | rgb(0, 0, 0) |
--rs-close-button-background-hover | color-mix(in srgb, rgb(0, 0, 0) 80%, transparent) |
--rs-close-button-background-pressed | color-mix(in srgb, rgb(0, 0, 0) 60%, transparent) |
--rs-close-button-border-radius | 100% |
--rs-close-button-transition | all 0.3s ease |
--rs-close-button-z-index | 20 |
--rs-close-button-icon-size-xs | 14px |
--rs-close-button-icon-size-sm | 16px |
--rs-close-button-icon-size-md | 18px |
--rs-close-button-icon-size-lg | 20px |
--rs-close-button-icon-size-xl | 22px |
--rs-close-button-icon-size-xxl | 24px |
Button (shared)
Shared variables for button sizing across all button types.
| Variable | Default |
|---|---|
--rs-button-size-xs | 32px |
--rs-button-size-sm | 36px |
--rs-button-size-md | 44px |
--rs-button-size-lg | 50px |
--rs-button-size-xl | 56px |
--rs-button-size-xxl | 58px |
--rs-button-font-size-xs | 10px |
--rs-button-font-size-sm | 12px |
--rs-button-font-size-md | 13px |
--rs-button-font-size-lg | 14px |
--rs-button-font-size-xl | 16px |
--rs-button-font-size-xxl | 18px |
--rs-button-padding-xs | 0px 8px |
--rs-button-padding-sm | 0px 12px |
--rs-button-padding-md | 0px 18px |
--rs-button-padding-lg | 0px 24px |
--rs-button-padding-xl | 0px 32px |
--rs-button-padding-xxl | 0px 36px |
--rs-button-gap-xs | 4px |
--rs-button-gap-sm | 6px |
--rs-button-gap-md | 8px |
--rs-button-gap-lg | 10px |
--rs-button-gap-xl | 12px |
--rs-button-gap-xxl | 14px |
--rs-button-color | rgb(255, 255, 255) |
--rs-button-background | rgb(0, 0, 0) |
--rs-button-background-hover | rgb(25, 25, 25) |
--rs-button-border | none |
--rs-button-border-radius | 4px |
--rs-button-transition | all 0.3s ease |
Icons
| Variable | Default |
|---|---|
--rs-icon-size-xs | 22px |
--rs-icon-size-sm | 24px |
--rs-icon-size-md | 28px |
--rs-icon-size-lg | 32px |
--rs-icon-size-xl | 36px |
--rs-icon-size-xxl | 40px |
--rs-icon-color | rgb(255, 255, 255) |
Full reference
All CSS custom properties with their default values:
.rs {
/* Container */
--rs-container-offset-x: 24px;
--rs-container-offset-y: 24px;
--rs-container-z-index: 10;
/* Video container */
--rs-video-container-size-xs: 156px;
--rs-video-container-size-sm: 192px;
--rs-video-container-size-md: 352px;
--rs-video-container-size-lg: 448px;
--rs-video-container-size-xl: 544px;
--rs-video-container-size-xxl: 640px;
--rs-video-container-background: white;
--rs-video-container-border: none;
--rs-video-container-border-radius: 8px;
--rs-video-container-shadow: 0 0 20px rgba(0, 0, 0, 0.2);
--rs-video-container-transition: all 0.3s ease-in-out;
--rs-video-container-overflow: hidden;
/* Video */
--rs-video-border-radius: 8px;
/* Video loader */
--rs-video-loader-size-xs: 24px;
--rs-video-loader-size-sm: 32px;
--rs-video-loader-size-md: 48px;
--rs-video-loader-size-lg: 64px;
--rs-video-loader-size-xl: 80px;
--rs-video-loader-size-xxl: 96px;
--rs-video-loader-fill: white;
--rs-video-loader-animation: 0.75s infinite linear;
/* Video progress */
--rs-video-progress-track-color: rgba(255, 255, 255, 0.2);
--rs-video-progress-buffer-color: rgba(255, 255, 255, 0.4);
--rs-video-progress-progress-color: rgb(255, 255, 255);
--rs-video-progress-border-radius: 0;
/* Video controls */
--rs-video-controls-drop-shadow: drop-shadow(0 0 10px rgba(0, 0, 0, 0.5));
--rs-video-controls-transition: all 0.3s ease;
--rs-video-controls-transform: scale(1.1);
--rs-video-controls-z-index: 20;
/* Video volume */
--rs-video-volume-drop-shadow: drop-shadow(0 0 10px rgba(0, 0, 0, 0.5));
--rs-video-volume-transition: all 0.3s ease;
--rs-video-volume-transform: scale(1.1);
--rs-video-volume-z-index: 20;
/* Button (shared) */
--rs-button-size-xs: 32px;
--rs-button-size-sm: 36px;
--rs-button-size-md: 44px;
--rs-button-size-lg: 50px;
--rs-button-size-xl: 56px;
--rs-button-size-xxl: 58px;
--rs-button-font-size-xs: 10px;
--rs-button-font-size-sm: 12px;
--rs-button-font-size-md: 13px;
--rs-button-font-size-lg: 14px;
--rs-button-font-size-xl: 16px;
--rs-button-font-size-xxl: 18px;
--rs-button-padding-xs: 0px 8px;
--rs-button-padding-sm: 0px 12px;
--rs-button-padding-md: 0px 18px;
--rs-button-padding-lg: 0px 24px;
--rs-button-padding-xl: 0px 32px;
--rs-button-padding-xxl: 0px 36px;
--rs-button-gap-xs: 4px;
--rs-button-gap-sm: 6px;
--rs-button-gap-md: 8px;
--rs-button-gap-lg: 10px;
--rs-button-gap-xl: 12px;
--rs-button-gap-xxl: 14px;
--rs-button-color: rgb(255, 255, 255);
--rs-button-background: rgb(0, 0, 0);
--rs-button-background-hover: rgb(25, 25, 25);
--rs-button-border: none;
--rs-button-border-radius: 4px;
--rs-button-transition: all 0.3s ease;
/* Close button */
--rs-close-button-size-xs: 18px;
--rs-close-button-size-sm: 22px;
--rs-close-button-size-md: 24px;
--rs-close-button-size-lg: 28px;
--rs-close-button-size-xl: 32px;
--rs-close-button-size-xxl: 34px;
--rs-close-button-color: rgb(255, 255, 255);
--rs-close-button-background: rgb(0, 0, 0);
--rs-close-button-background-hover: color-mix(in srgb, rgb(0, 0, 0) 80%, transparent);
--rs-close-button-background-pressed: color-mix(in srgb, rgb(0, 0, 0) 60%, transparent);
--rs-close-button-border-radius: 100%;
--rs-close-button-transition: all 0.3s ease;
--rs-close-button-z-index: 20;
--rs-close-button-icon-size-xs: 14px;
--rs-close-button-icon-size-sm: 16px;
--rs-close-button-icon-size-md: 18px;
--rs-close-button-icon-size-lg: 20px;
--rs-close-button-icon-size-xl: 22px;
--rs-close-button-icon-size-xxl: 24px;
/* CTA button */
--rs-cta-button-color: rgb(255, 255, 255);
--rs-cta-button-background: rgb(0, 0, 0);
--rs-cta-button-background-hover: color-mix(in srgb, rgb(0, 0, 0) 80%, transparent);
--rs-cta-button-background-pressed: color-mix(in srgb, rgb(0, 0, 0) 60%, transparent);
--rs-cta-button-shadow: 0 0 20px rgba(0, 0, 0, 0.2);
--rs-cta-button-transition: all 0.3s ease;
--rs-cta-button-z-index: 20;
/* Icons */
--rs-icon-size-xs: 22px;
--rs-icon-size-sm: 24px;
--rs-icon-size-md: 28px;
--rs-icon-size-lg: 32px;
--rs-icon-size-xl: 36px;
--rs-icon-size-xxl: 40px;
--rs-icon-color: rgb(255, 255, 255);
}