/* variables specific to current element */ $map-pin-height-mobile: map-deep-get($token-sizes-unit-map, "96"); $map-pin-width-mobile: map-deep-get($token-sizes-unit-map, "96"); $map-pin-height-desktop: map-deep-get($token-sizes-unit-map, "120"); :root { --map-pin-height: #{$map-pin-height-mobile}; --map-pin-width: #{$map-pin-width-mobile}; @include media-breakpoint-up("sm") { --map-pin-width: 100%; } @include media-breakpoint-up("lg") { --map-pin-height: #{$map-pin-height-desktop}; } } .#{$namespace}mapPin { /* Save root element context for easy access if nesting is needed */ $self: &; /* properties of current element + media queries */ position: relative; z-index: z("zero"); border-radius: map-deep-get($token-radius-map, "24"); width: var(--map-pin-width); height: var(--map-pin-height); display: flex; align-items: center; justify-content: center; overflow: hidden; transition: 0.15s transform linear; /* Pseudo Elements */ &::before { content: ""; @extend %dot; background-color: map-deep-get($token-button-cta-map, "success", "state-default", "background-color"); position: absolute; z-index: z("negative"); bottom: calc(50% - (#{map-deep-get($token-button-size-big-map, "mobile", "min-height")} * 0.5)); left: 50%; transform: translate(-50%, -50%) scale(0.5) ; opacity: 0; transition: opacity 0.15s linear, transform 0.15s linear } &::after { } /* Include elements that are linked to the current element but have to reside at the root level of the stylesheet (e.g: keyframes) */ @at-root { } /* children - write selector in full in comments in order to facilitate search */ IMG { position: absolute; z-index: z("deepdivenegative"); top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; transition: transform 0.15s linear; } &__detailLocationInteraction { transition: margin-top 0.15s linear; } /* modifiers */ // mapPin -altStyle &.-altStyle { // follows same logic as base element } /* random parent element */ /* * * Syntax : .randomParentElt & {} * */ /* Pseudo Classes */ &:hover { @media (hover: hover) { IMG { transform: scale(1.1); } &::before { transform: translate(-50%, 100%) scale(0.5); opacity: 1; } #{$self}__detailLocationInteraction { margin-top: -(map-deep-get($token-spacer-stack-max-map, "xs")); } } } &:focus { } &:active { } &:focus, &:active { } }