diff --git a/assets/img/minus-circle.svg b/assets/img/minus-circle.svg
new file mode 100644
index 00000000..2703cc89
--- /dev/null
+++ b/assets/img/minus-circle.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/img/plus.svg b/assets/img/plus.svg
new file mode 100644
index 00000000..5a7726bf
--- /dev/null
+++ b/assets/img/plus.svg
@@ -0,0 +1,3 @@
+
diff --git a/blocks/bacom-elastic-carousel/bacom-elastic-carousel.css b/blocks/bacom-elastic-carousel/bacom-elastic-carousel.css
index fa33bebd..717071de 100644
--- a/blocks/bacom-elastic-carousel/bacom-elastic-carousel.css
+++ b/blocks/bacom-elastic-carousel/bacom-elastic-carousel.css
@@ -1,512 +1,352 @@
-/* Migrated verbatim from source repo (c2-block-migration branch); style violations left as-is pending reconciliation with this repo's conventions. */
-/* stylelint-disable */
-
-/** main classes */
-
-html[dir="rtl"] {
- .bacom-elastic-carousel {
- & .elastic-carousel-container {
- & .elastic-carousel-item {
- & .elastic-carousel-item-footer {
- &:after {
- transform: rotate(180deg);
- left: 0;
- right: unset;
- }
- }
-
- & .elastic-carousel-item-header {
- &:after {
- transform: rotate(180deg);
- left: 0;
- right: unset;
- }
- }
- }
- }
- }
-}
+/* stylelint-disable no-descending-specificity */
.bacom-elastic-carousel {
- --elastic-carousel-transtions: all .5s ease;
- --elastic-carousel-container-height-desktop: 590px;
- --elastic-carousel-container-height-tablet: 572px;
- --elastic-carousel-item-max-width: 294px;
- --elastic-carousel-item-hover-grow-index: 1.75;
- --slides: 5;
- --start-gap: 2.75rem;
- --end-gap: .25rem;
- --paralax-easing: cubic-bezier(0.42, 0, 0, 1);
- --elastic-carousel-container-width: calc((var(--slides) * var(--elastic-carousel-item-max-width)) + (var(--slides) * (var(--end-gap) * 2)));
-
- height: var(--elastic-carousel-container-height-desktop);
+ --elastic-carousel-item-width: 294px;
+ --elastic-carousel-gap: var(--s2a-spacing-md);
+
position: relative;
- overflow: clip;
margin: auto;
+ background-color: #000;
+}
- .elastic-carousel-container {
- display: flex;
- position: absolute;
- left: 0;
- transform: translateX(calc(50vw - 50%));
- transition: transform .5s ease;
- max-width: var(--elastic-carousel-container-width);
-
- .elastic-carousel-item {
- display: flex;
- flex-direction: column;
- position: relative;
- text-decoration: none;
- color: inherit;
- width: var(--elastic-carousel-item-max-width);
- max-width: var(--elastic-carousel-item-max-width);
- background-color: var(--s2a-color-gray-75);
- border-radius: var(--s2a-border-radius-md);
- cursor: pointer;
- will-change: width, max-width;
- transition: max-width .3s var(--paralax-easing), width .3s var(--paralax-easing), background-color .2s ease;
- contain: layout;
-
- .elastic-carousel-item-header {
- display: flex;
- flex-direction: row;
- padding: var(--s2a-spacing-lg);
- gap: var(--s2a-spacing-md);
- align-items: center;
-
- img {
- width: 24px;
- height: 24px;
- }
-
- p {
- font-size: var(--s2a-font-size-sm);
- font-weight: var(--s2a-font-weight-adobe-clean-bold);
- color: var(--s2a-color-gray-1000);
- margin: 0;
- transition: color .1s ease;
- line-height: var(--s2a-font-line-height-18);
- display: -webkit-box;
- line-clamp: 1;
- box-orient: vertical;
- -webkit-box-orient: vertical;
- -webkit-line-clamp: 1;
- overflow: hidden;
- }
- }
-
- .elastic-carousel-item-media {
- text-align: center;
-
- video {
- border-radius: var(--s2a-border-radius-md);
- object-fit: cover;
- height: 394px;
- width: 100%;
- }
- }
-
- .elastic-carousel-item-footer {
- display: flex;
- flex-direction: column;
- padding: var(--s2a-spacing-lg);
- max-width: 270px;
- font-size: var(--s2a-font-size-md);
- line-height: var(--s2a-font-line-height-16);
-
- &:after {
- content: '';
- display: block;
- background: url('../../assets/img/arrow-right.svg') no-repeat;
- width: 24px;
- height: 24px;
- margin: var(--s2a-spacing-lg);
- position: absolute;
- right: 0;
- bottom: 0;
- opacity: 0;
- transition: none;
- }
-
- :is(h1, h2, h3, h4, h5, h6) {
- /* TODO: remove eyebrow styles if eyebrow class is applied directly to footer headline */
- font-family: var(--body-font-family);
- font-size: var(--s2a-typography-font-size-eyebrow);
- font-weight: var(--s2a-font-weight-adobe-clean-bold);
- line-height: var(--s2a-typography-line-height-eyebrow);
- letter-spacing: var(--s2a-typography-letter-spacing-eyebrow);
- margin: 0 0 var(--s2a-spacing-2xs) 0;
- transition: color .1s ease;
- display: -webkit-box;
- line-clamp: 1;
- box-orient: vertical;
- -webkit-box-orient: vertical;
- -webkit-line-clamp: 1;
- overflow: hidden;
- }
-
- p {
- opacity: .6;
- margin: 0;
- transition: color .1s ease;
- display: -webkit-box;
- line-clamp: 2;
- box-orient: vertical;
- -webkit-box-orient: vertical;
- -webkit-line-clamp: 2;
- overflow: hidden;
- }
- }
- }
- }
+.bacom-elastic-carousel .elastic-carousel-container {
+ display: flex;
+ gap: var(--elastic-carousel-gap);
+ overflow-x: auto;
+ scroll-snap-type: x mandatory;
+ scrollbar-width: none;
+ scroll-behavior: smooth;
+ padding-top: 56px;
}
+.bacom-elastic-carousel .elastic-carousel-container::-webkit-scrollbar {
+ display: none;
+}
-/** custom media rules */
-@media (768px <= width < 1700px) {
- .elastic-carousel-container {
- left: 50%;
- transform: translateX(-50%);
+.bacom-elastic-carousel .elastic-carousel-item-wrap {
+ display: contents;
+}
- &.stick-left {
- transform: translateX(0);
- }
+.bacom-elastic-carousel .elastic-carousel-scrubber {
+ display: none;
+}
- &.stick-right {
- transform: translateX(calc(100vw - 100%));
- }
- }
+.bacom-elastic-carousel .elastic-carousel-item {
+ display: flex;
+ flex: 0 0 auto;
+ flex-direction: column;
+ width: var(--elastic-carousel-item-width);
+ max-width: 346px;
+ max-height: 485px;
+ overflow: hidden;
+ scroll-snap-align: start;
+ text-decoration: none;
+ color: inherit;
+ background-color: #FFF;
+ border-radius: var(--s2a-border-radius-md);
+ cursor: pointer;
}
-/** desktop only */
-@media (1280px <= width) {
- .elastic-carousel-container {
- max-height: var(--elastic-carousel-container-height-desktop);
+.bacom-elastic-carousel .elastic-carousel-item-container {
+ display: flex;
+ flex-direction: column;
+ height: auto;
+ max-width: 346px;
+ overflow: hidden;
+}
- .elastic-carousel-item {
- width: calc(100vw/calc(var(--slides) - 1));
- }
- }
+.bacom-elastic-carousel .elastic-carousel-item-header {
+ display: flex;
+ flex: 0 0 auto;
+ flex-direction: column;
+ gap: var(--s2a-spacing-xs);
+ padding: var(--s2a-spacing-lg);
}
-/** tablet only */
-@media (768px <= width < 1280px) {
- .bacom-elastic-carousel {
- height: var(--elastic-carousel-container-height-tablet);
+.bacom-elastic-carousel .elastic-carousel-item-header-row {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ gap: var(--s2a-spacing-md);
+}
- .elastic-carousel-container {
- height: 100%;
- max-height: var(--elastic-carousel-container-height-tablet);
+.bacom-elastic-carousel .elastic-carousel-item-header img {
+ width: 24px;
+ height: 24px;
+}
- .elastic-carousel-item {
- width: calc(100vw / calc(var(--slides) - 1.5));
+.bacom-elastic-carousel .elastic-carousel-item-header-row p {
+ margin: 0;
+ color: var(--s2a-color-gray-1000);
+ font-size: var(--s2a-font-size-sm);
+ font-weight: var(--s2a-font-weight-adobe-clean-bold);
+ line-height: var(--s2a-font-line-height-18);
+}
- .elastic-carousel-item-header {
- padding: var(--s2a-spacing-md);
- }
- }
- }
- }
+.bacom-elastic-carousel .elastic-carousel-item-media {
+ flex: 1 1 auto;
+ min-height: 0;
+ text-align: center;
}
-/** tablet up */
-@media (width >= 768px) {
- .bacom-elastic-carousel {
- padding: 2px 0;
-
- &.disable-hover {
- pointer-events: none;
- }
-
- html[dir="rtl"] .elastic-carousel-container {
- --start-margin: -200px;
- }
-
- .elastic-carousel-container {
- --start-margin: 200px;
- /** animation */
- animation: elasticCarouselSlideIn var(--parallax-easing) both;
- animation-timeline: view();
- animation-range: entry 20% exit 100%;
-
- .elastic-carousel-item {
-
- &:nth-child(2) {
- --start-gap: 2.25rem;
- }
-
- &:nth-child(3) {
- --start-gap: 1.75rem;
- }
-
- &:nth-child(4) {
- --start-gap: 1rem;
- }
-
- &:nth-child(5) {
- --start-gap: .5rem;
- }
-
- margin-inline: var(--start-gap);
- will-change: margin-inline;
- animation: elasticItemsGapShrink var(--parallax-easing) both;
- animation-timeline: view();
- animation-range: entry 0% exit 100%;
-
- &.hovered,
- &:focus-visible {
- background-color: var(--s2a-color-gray-1000);
- max-width: 496px;
- width: calc((100vw/calc(var(--slides)))*var(--elastic-carousel-item-hover-grow-index));
-
- .elastic-carousel-item-footer p,
- .elastic-carousel-item-header p {
- color: var(--s2a-color-gray-25);
- }
-
- .elastic-carousel-item-footer {
-
- h1,
- h2,
- h3,
- h4,
- h5,
- h6 {
- color: var(--s2a-color-gray-25);
- }
- }
-
- .elastic-carousel-item-footer:after {
- opacity: 1;
- background-color: var(--s2a-color-gray-25);
- border-radius: var(--s2a-border-radius-round);
- background-position: 55% 50%;
- background-size: 8px;
- position: absolute;
- }
- }
- }
- }
- }
+.bacom-elastic-carousel .elastic-carousel-item-media video {
+ display: block;
+ width: 100%;
+ height: 316px;
+ max-height: 316px;
+ object-fit: cover;
+ border-radius: var(--s2a-border-radius-md);
}
-/* mobile only */
-@media (width < 768px) {
- .bacom-elastic-carousel {
- --offset-adjuster: 50px;
- --offset-scale: .85;
- --last-offset: 2.5rem;
- --offset-variance-index: -2px;
+/* Hides the badge some browser extensions (e.g. Video Speed Controller) inject onto