/* variables specific to current element */ $element-specific-variables: ""; .#{$namespace}pageLayout { /* Save root element context for easy access if nesting is needed */ $self: &; /* properties of current element + media queries */ display: flex; flex-direction: column; min-height: 100%; /* Pseudo Elements */ &::before { } &::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 */ // pageLayout__header &__header { // follows same logic as parent position: sticky; z-index: z("fixed"); top: 0; transition: top $snet-frame-main-header-transition-duration-global linear; &[data-nav-module] { position: fixed; left: 0; width: 100%; } } &__main { margin-bottom: map-deep-get($token-spacer-content-section-map, "sm"); flex-grow: 1; @include media-breakpoint-up("lg") { margin-bottom: map-deep-get($token-spacer-content-section-map, "m"); } } &__footer { } &:has([data-nav-module]) { padding-top: $nav-topbar-height-global; } /* modifiers */ // pageLayout -mainNoSpacing &.-mainNoSpacing { // follows same logic as base element #{$self}__main { margin-bottom: 0; } } /* random parent element */ /* * * Syntax : .randomParentElt & {} * */ /* Pseudo Classes */ &:hover { @media (hover: hover) { } } &:focus { } &:active { } &:focus, &:active { } }