/* https://cssguidelin.es/#bem-like-naming */
--icon-extra-padding: 8px;
--thumbnails-col-width: 18.6%;
flex-direction: var(--flex-carousel);
.pdp-carousel--thumbnailsColumn {
justify-content: flex-end;
.pdp-carousel--thumbnailsRow {
padding-left: calc(var(--icon-size) + var(--icon-extra-padding));
padding-right: calc(var(--icon-size) + var(--icon-extra-padding));
width: calc(var(--width) - 2 * var(--icon-size) - 2 * var(--icon-extra-padding));
transform: translateY(-50%);
.pdp-carousel__button--prev {
.pdp-carousel__button--next {
.pdp-carousel__button__icon--prev {
transform: rotate(90deg);
.pdp-carousel__button__icon--next {
transform: rotate(-90deg);
.pdp-carousel--main-image-controls.pdp-carousel--thumbnailsColumn .pdp-carousel__button--prev {
left: var(--thumbnails-col-width);
.pdp-carousel--main-image-controls.pdp-carousel--thumbnailsRow .pdp-carousel__button--prev {
top: calc(var(--height) / 2);
.pdp-carousel--main-image-controls.pdp-carousel--thumbnailsRow .pdp-carousel__button--next {
top: calc(var(--height) / 2);
/* Arrows for thumbnails case */
.pdp-carousel__button--thumbnailsColumn {
.pdp-carousel__button--thumbnailsRow {
.pdp-carousel__button__icon--thumbnailsColumn--prev {
transform: rotate(180deg);
.pdp-carousel__button__icon--thumbnailsRow--prev {
transform: rotate(90deg);
.pdp-carousel__button__icon--thumbnailsRow--next {
transform: rotate(-90deg);
scroll-padding: var(--peak);
width: var(--total-width);
-webkit-overflow-scrolling: touch;
.pdp-carousel__wrapper--horizontal {
scroll-snap-type: x mandatory;
scroll-snap-stop: always;
.pdp-carousel__slide--horizontal {
width: calc(calc(100%) - var(--peak));
.pdp-carousel__slide--horizontal.pdp-carousel__slide--orphan {
(calc(100%) / var(--per-page) * var(--length)) - var(--peak) / var(--per-page) * var(--length) -
var(--gap) / var(--per-page) * (var(--per-page) - var(--length))
.pdp-carousel__slide > * {
.pdp-carousel__slide > img {
.pdp-carousel__wrapper--peak {
--peak: calc(var(--spacing-medium) + var(--gap));
.pdp-carousel__wrapper--scrollbar {
--scroll-foreground: var(--color-neutral-600);
--scroll-background: var(--color-neutral-400);
scrollbar-color: var(--scroll-foreground) var(--scroll-background);
.pdp-carousel__wrapper:not(.pdp-carousel__wrapper--scrollbar) {
.pdp-carousel__wrapper:not(.pdp-carousel__wrapper--scrollbar)::-webkit-scrollbar {
.pdp-carousel__wrapper--scrollbar::-webkit-scrollbar {
width: 4px; /* Mostly for vertical scrollbars */
height: 4px; /* Mostly for horizontal scrollbars */
.pdp-carousel__wrapper--scrollbar::-webkit-scrollbar-thumb {
background: var(--scroll-foreground);
.pdp-carousel__wrapper--scrollbar::-webkit-scrollbar-track {
background: var(--scroll-background);
/* Thumbnail controls container */
.pdp-carousel__controls__container--thumbnailsRow {
--thumbnails-spacing: var(--spacing-small);
--thumbnails-box-width: var(--spacing-xxsmall);
--thumbnails-rest: calc(var(--thumbnails-spacing) - var(--thumbnails-box-width));
--thumbnails-width: calc(
var(--width) - 2 * var(--icon-size) - 4 * var(--thumbnails-spacing) - var(--thumb-peak) - 2 *
var(--thumbnails-box-width)
margin-top: var(--thumbnails-rest);
.pdp-carousel__controls__container--thumbnailsColumn {
--thumbnails-spacing: var(--spacing-small);
--thumbnails-box-width: var(--spacing-xxsmall);
--thumbnails-rest: calc(var(--thumbnails-spacing) - var(--thumbnails-box-width));
--thumbnails-width: 100%;
width: calc(var(--thumbnails-col-width) - var(--thumbnails-rest));
margin-right: var(--thumbnails-rest);
/* has class .pdp-carousel__controls__container--thumbnailsColumn but doesnt have class pdp-carousel__controls__container--no-arrows */
.pdp-carousel__controls__container--thumbnailsColumn:not(
.pdp-carousel__controls__container--no-arrows
height: calc(max(var(--height), 4 * var(--thumbnails-spacing)) - 4 * var(--thumbnails-spacing));
.pdp-carousel__controls__container--thumbnailsColumn.pdp-carousel__controls__container--no-arrows {
/* Thumbnail controls wraper */
.pdp-carousel__controls__wrapper--thumbnailsColumn {
.pdp-carousel__controls__wrapper--thumbnailsRow {
.pdp-carousel__controls--thumbnailsRow > label > span:nth-last-child(1) {
margin-right: var(--thumbnails-box-width); /* 4px is padding*/
.pdp-carousel__controls__wrapper::-webkit-scrollbar {
.pdp-carousel__controls__wrapper {
-ms-overflow-style: none; /* IE and Edge */
scrollbar-width: none; /* Firefox */
/* Thumbnail controls group */
.pdp-carousel__controls {
gap: var(--spacing-xsmall);
.pdp-carousel__controls--thumbnailsColumn {
grid-template-columns: repeat(1, 1fr);
grid-row-gap: var(--thumbnails-spacing);
padding: var(--thumbnails-box-width);
.pdp-carousel__controls--thumbnailsRow {
grid-column-gap: var(--thumbnails-spacing);
padding: var(--thumbnails-box-width);
.pdp-carousel__controls__button {
background: var(--color-neutral-400);
.pdp-carousel__controls__button:hover {
background: var(--color-neutral-500);
.pdp-carousel__controls__button:active,
.pdp-carousel__controls__button--active {
background: var(--color-neutral-600);
.pdp-carousel__slide--last {
.pdp-carousel__thumbnail__container input[type='radio'] {
.pdp-carousel__thumbnail__container .pdp-carousel__thumbnail__span {
--bg-color: var(--color-neutral-300);
box-shadow: 0 0 0 var(--shape-border-width-1) var(--color-neutral-400);
background-color: var(--bg-color);
background-image: var(--background-image);
background-repeat: no-repeat;
.pdp-carousel__thumbnail__content {
.pdp-carousel__thumbnail__span:hover {
0 0 0 var(--shape-border-width-3) var(--color-neutral-50),
0 0 0 var(--shape-border-width-4) var(--color-neutral-500);
.pdp-carousel__controls__wrapper--thumbnailsRow .pdp-carousel__thumbnail__container {
.pdp-carousel__thumbnail__container
input[type='radio']:not(:checked):active
~ .pdp-carousel-thumbnail__span {
box-shadow: 0 0 0 var(--shape-border-width-1) var(--color-neutral-500);
.pdp-carousel__thumbnail__container input[type='radio']:checked ~ .pdp-carousel__thumbnail__span,
.pdp-carousel__thumbnail--selected {
0 0 0 var(--shape-border-width-3) var(--color-neutral-50),
0 0 0 var(--shape-border-width-4) var(--color-neutral-800);
.pdp-carousel__thumbnail__container
input[type='radio']:checked:active
~ .pdp-carousel__thumbnail__span {
0 0 0 var(--shape-border-width-3) var(--color-neutral-50),
0 0 0 var(--shape-border-width-4) var(--color-neutral-600);
.pdp-carousel__thumbnail__container
input[type='radio']:focus-visible
+ .pdp-carousel__thumbnail__span {
0 0 0 var(--shape-border-width-3) var(--color-neutral-900),
0 0 0 6px var(--color-neutral-400);
.pdp-carousel__thumbnail__span > img {
/* Medium (portrait tablets and large phones, 768px and up) */
/* @media only screen and (min-width: 768px) { } */
/* Large (landscape tablets, 1024px and up) */
/* @media only screen and (min-width: 1024px) { } */
/* XLarge (laptops/desktops, 1366px and up) */
/* @media only screen and (min-width: 1366px) { } */
/* XXlarge (large laptops and desktops, 1920px and up) */
/* @media only screen and (min-width: 1920px) { } */