/* * Citizen - Mixins * https://starcitizen.tools */ .citizen-card( @border-radius: true ) { background-color: var( --color-surface-1 ); box-shadow: var( --box-shadow-dialog ); & when ( @border-radius ) { border-radius: var( --border-radius--medium ); } } // Collaspe animation setup .citizen-card-hide( @position, @axis: '', @fadeChildren: true ) { opacity: 0; pointer-events: none; transform: ~'scale@{axis}( 0 )'; transform-origin: @position; visibility: hidden; & when ( @fadeChildren ) { > * { opacity: 0; } } } // Expand animiation setup // When using fadeChildren, the child elements need to have // opacity: 0 set manually .citizen-card-show( @fadeChildren: true ) { opacity: 1; pointer-events: auto; transform: none; // HACK: So that visiblity won't wait 250ms to become visible transition-delay: 0ms; visibility: visible; & when ( @fadeChildren ) { > * { .citizen-card-content-show; } } } // Fade content when users open the menu // But GTFO instantly when they close the menu .citizen-card-content-show() { opacity: 1; transition: @transition-opacity--transform; } // Transition animation .citizen-card-transition() { transition: @transition-transform, @transition-opacity--transform, @transition-visibility--transform; } // Header card popups .citizen-header-card( @position ) { position: absolute; right: 0; bottom: 100%; left: 0; overflow: auto; min-width: 16rem; max-height: var( --header-card-maxheight ); margin: var( --space-sm ); overscroll-behavior: contain; user-select: none; .citizen-card(); .citizen-card-hide( bottom @position ); @media ( min-width: @width-breakpoint-tablet ) { & when ( @position = left ) { right: unset; } & when ( @position = right ) { left: unset; } } @media ( min-width: @width-breakpoint-desktop ) { right: unset; left: 100%; & when ( @position = left ) { top: 0; bottom: unset; .citizen-card-hide( top left ); } & when ( @position = right ) { bottom: 0; .citizen-card-hide( bottom left ); } } } // To hide objects, but keep them accessible for screen-readers .hidden() { position: absolute; top: -9999px; } // Set content to be at the center .content-center() { max-width: var( --width-layout ); margin-right: auto; margin-left: auto; } // Prepare for RL icons .resource-loader-icon-link() { display: block; width: @icon-box-size; height: @icon-box-size; } .resource-loader-icon-link-small() { display: block; width: @icon-size; height: @icon-size; } .resource-loader-icon() { position: absolute; width: inherit; height: inherit; background-position: center; background-repeat: no-repeat; content: ''; } .resource-loader-menu-icon() { position: absolute; width: @icon-box-size; height: @icon-box-size; background-position: center; background-repeat: no-repeat; content: ''; } .resource-loader-list-icon() { position: relative; width: @icon-size; height: @icon-size; flex-shrink: 0; align-self: center; background-position: center; background-repeat: no-repeat; background-size: contain; content: ''; } .menu-item-link() { display: flex; align-items: center; justify-content: space-between; color: var( --color-base ) !important; font-weight: 450; gap: 0.5rem; } .menu-item-link-hover() { background-color: var( --background-color-primary--hover ); } .menu-item-link-active() { background-color: var( --background-color-primary--active ); } // Button Styles .button-blue() { background-color: var( --color-primary ); color: #fff !important; transition: @transition-background, @transition-color; } .button-blue-hover() { background-color: var( --color-primary--hover ); } .button-blue-active() { background-color: var( --color-primary--active ); } .button-red() { background-color: var( --color-destructive ); color: #fff !important; transition: @transition-background, @transition-color; } .button-red-hover() { background-color: var( --color-destructive--hover ); } .button-red-active() { background-color: var( --color-destructive--active ); } // Gradient overflow .gradient-overflow(@position) { position: fixed; z-index: 3; width: 100%; height: @margin-side * 2; background: @position; content: ''; } // Borrowed from Mediawiki core 1.35 // “Clearfix Reloaded” Mixin // The mixin is used on a container with floating children. // Margin collapsing is a feature, not a bug, hence relying on `display: block` as default. // With `.mixin-clearfix( @collapse: false; );` you call it to let `margin`s not collapse. // See https://www.cssmojo.com/the-very-latest-clearfix-reloaded/ // In future we might replace the `&:after` pseudo-element with // `display: flow-root;` altogether. // Support: Firefox 3.5+, Safari 4+, Chrome, Opera 15+, IE 8+ .mixin-clearfix( @collapse: true ) { &:after { clear: both; // Margin collapsing as feature. Apply it. & when ( @collapse ) { display: block; content: ''; } } // Margin collapsing as bug. Prevent it. & when not ( @collapse ) { &:before, &:after { display: table; content: ''; } } }