@if not-imported("import_once_func") { @import "import_once_func"; } @if not-imported("settings") { @import "settings"; } @if not-imported("functions") { @import "functions"; } /** * Layout */ @mixin centered($max-width: $breakpoint-desktop, $resp-padding: 25px) { max-width: $max-width; margin: 0 auto; position: relative; @media screen and (max-width: $max-width + 2 * $resp-padding) { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; padding-left: $resp-padding; padding-right: $resp-padding; } } @mixin centered-1200 { @include centered(); } /** * Responsive */ @mixin for-max-size($size) { @media screen and (max-width: $size) { @content; } } @mixin for-min-size($size) { @media screen and (min-width: $size) { @content; } } @mixin for-tablet { @include for-max-size($breakpoint-tablet) { @content; } } @mixin for-mobile { @include for-max-size($breakpoint-mobile) { @content; } } @mixin for-tablet-up { @include for-min-size($breakpoint-mobile+1) { @content; } } @mixin for-desktop-up { @include for-min-size($breakpoint-tablet+1) { @content; } } /** * Shorthand */ @mixin transform($transform...) { -webkit-transform: $transform; -moz-transform: $transform; -ms-transform: $transform; -o-transform: $transform; transform: $transform; } @mixin transition($transition...) { -webkit-transition: $transition; -moz-transition: $transition; -ms-transition: $transition; -o-transition: $transition; transition: $transition; } @mixin box-sizing($boxval) { -webkit-box-sizing: $boxval; -moz-box-sizing: $boxval; box-sizing: $boxval; } @mixin box-shadow($shadow...) { -webkit-box-shadow: $shadow; -moz-box-shadow: $shadow; box-shadow: $shadow; } @mixin border-radius($radius) { -webkit-border-radius: $radius; -moz-border-radius: $radius; border-radius: $radius; } @mixin filter($filter) { -webkit-filter: $filter; -ms-filter: $filter; filter: $filter; } @mixin placeholder { &::-webkit-placeholder { @content; } &:-moz-placeholder { @content; } &::-moz-placeholder { @content; } &:-ms-input-placeholder { @content; } &::-ms-input-placeholder { @content; } &:-ms-placeholder { @content; } &:-o-placeholder { @content; } &::placeholder { @content; } } @mixin aspect-ratio($width, $height, $float: false) { position: relative; @if $float { overflow: hidden; &:before { display: table; content: ""; padding-top: ($height / $width) * 100%; float: left; } } @else { &:before { display: block; content: ""; width: 100%; padding-top: ($height / $width) * 100%; } > * { position: absolute; top: 0; left: 0; right: 0; bottom: 0; } } } /// Mixin printing a linear-gradient /// as well as a plain color fallback /// and the `-webkit-` prefixed declaration /// @access public /// @param {String | List | Angle} $direction - Linear gradient direction /// @param {Arglist} $color-stops - List of color-stops composing the gradient @mixin linear-gradient($direction, $color-stops...) { @if is-direction($direction) == false { $color-stops: ($direction, $color-stops); $direction: 180deg; } background: nth(nth($color-stops, 1), 1); background: -webkit-linear-gradient(legacy-direction($direction), $color-stops); background: linear-gradient($direction, $color-stops); } @mixin column-classes($gutter-width, $max-columns, $class-name) { @for $cols from 1 through $max-columns { @for $span from 1 through $cols { &.-#{unquote($class-name)}-col-#{$cols}-#{$span} { flex-basis: 100% / $cols * $span - ($gutter-width * 100%); max-width: 100% / $cols * $span - ($gutter-width * 100%); order: 6; } } } @for $cols from 1 through $max-columns { &.-#{unquote($class-name)}-order-#{$cols} { order: $cols; } } } /** * Object Fit */ @mixin object-fit($mode: cover, $position: 50% 50%) { object-fit: $mode; object-position: $position; font-family: 'object-fit: #{$mode};'; display: block; width: 100%; height: 100%; } /** * Fonts */ @mixin small-caps { font-weight: 400; text-transform: lowercase; font-family: $font-family-alternate-sc; } @mixin font-alt { font-weight: 700; text-transform: uppercase; letter-spacing: 0.125em; font-family: $font-family-alternate; } @mixin iconfont { display: inline-block; font-family: $font-family-icon !important; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; vertical-align: -0.1em; } @mixin icon($content: "", $font-size: 100%, $line-height: 1) { @include iconfont; font-size: $font-size; line-height: $line-height; @if $content != "" { content: $content; } -webkit-font-smoothing: antialiased; font-smoothing: antialiased; text-rendering: geometricPrecision; text-indent: 0; display: inline-block; position: relative; } /** * Clearfix */ @mixin cf { &:before, &:after { content: " "; /* 1 */ display: table; /* 2 */ } &:after { clear: both; } /** * For IE 6/7 only * Include this rule to trigger hasLayout and contain floats. */ & { *zoom: 1; } } /** * Text-Styling */ @mixin headline($font-size: 100%, $font-weight: 700, $color: $color-headline, $font-family: $font-family) { font-family: $font-family-alternate; color: $color; font-weight: $font-weight; font-size: $font-size; } @mixin text-overflow-ellipsis { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } /** * Boxes */ @mixin box { &:not(.rs-columns) { background-color: $color-bg-primary; padding: 20px 35px; @include box-sizing(border-box); .-has-buttons&, &.-has-button { position: relative; padding-bottom: 65px; } .cta-button:last-child { position: absolute; bottom: 20px; left: 35px; right: 35px; } } &.rs-columns { margin-left: -10px; margin-top: 0; > * { flex-shrink: 1; flex-grow: 1; background-color: $color-bg-primary; margin-left: 10px; margin-top: 20px; padding: 20px 35px; @include box-sizing(border-box); position: relative; .-has-buttons&, &.-has-button { padding-bottom: 65px; } .cta-button:last-child { position: absolute; bottom: 20px; left: 35px; right: 35px; } } } } @mixin box-black{ @include box; &:not(.rs-columns) { background-color: $color-bg-secondary; color: $color-text-invert; } &.rs-columns { > * { background-color: $color-bg-secondary; color: $color-text-invert; } } } @mixin box-white{ @include box; border: 1px $color-stroke-grey solid; } @mixin box-yellow { @include box; background-color: $color-bg-primary; border: 1px $color-stroke-light solid; padding: 10px; } @mixin box-grey { @include box; background-color: $color-bg-footer; padding: 10px; } /** * Buttons */ @mixin button($color: $button-color, $border-color: $button-border-color, $background-color: $button-background-color, $font-size: $font-size-button, $color-hover: $button-color-hl, $border-color-hover: $button-border-color-hl, $background-color-hover: $button-background-color-hl, $button-height: $button-height, $button-padding-vertical: $button-padding-vertical, $button-padding-horizontal: $button-padding-horizontal) { $button-padding: $button-padding-vertical $button-padding-horizontal; position: relative; letter-spacing: 0.125em; font-family: $font-family-alternate; font-weight: 700; background: $background-color; color: $color; font-size: $font-size; display: inline-block; padding: $button-padding; height: $button-height; line-height: #{$button-height - (2*$button-border-width) - (2*$button-padding-vertical)}; white-space: nowrap; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; border: $button-border-width $border-color solid; cursor: pointer; text-align: center; -webkit-transition: all 0.2s ease-in; -moz-transition: all 0.2s ease-in; -ms-transition: all 0.2s ease-in; -o-transition: all 0.2s ease-in; transition: all 0.2s ease-in; text-transform: uppercase; &[data-icon]:not([data-icon=""]) { &:after { @include icon(attr(data-icon),font-size(20px),inherit); vertical-align: bottom; margin-left: 1ex; } } &:hover { color: $color-hover; border-color: $border-color-hover; background: $background-color-hover; } } @mixin button-big ($color: $button-color, $border-color: $button-border-color, $background-color: $button-background-color, $font-size: $font-size-button, $color-hover: $button-color-hl, $border-color-hover: $button-border-color-hl, $background-color-hover: $button-background-color-hl, $button-height: $button-height, $button-padding-vertical: $button-padding-vertical, $button-padding-horizontal: $button-padding-horizontal) { @include button($color, $border-color, $background-color, $font-size, $color-hover, $border-color-hover, $background-color-hover, $button-height, $button-padding-vertical, $button-padding-horizontal); height: 45px; line-height: #{45px - (2*$button-border-width) - (2*$button-padding-vertical)}; } @mixin button-text { @include button($color: $color-text, $color-hover: $color-text, $background-color-hover: none); background: none; border: none; height: auto; padding: 0; margin-right: auto; color: $color-text; text-transform: uppercase; font-size: font-size(14px); font-weight: 600; letter-spacing: 0.1em; } @mixin button-icon-only($color: $button-color, $border-color: $button-border-color, $background-color: $button-background-color, $font-size: $font-size-default, $color-hover: $color, $border-color-hover: $border-color, $border-background-hover: mix($background-color,#000,70%)) { @include button($color,$border-color,$background-color,$font-size,$color-hover,$border-color-hover,$border-background-hover); min-width: $button-height; text-indent: -9999px; overflow: hidden; font-size: 100%; &:after { text-indent: 0; float: left; margin: 0; width: #{$button-height - (2*$button-padding-horizontal) - (2*$button-border-width)}; } } @mixin button-no-icon { &:after { display: none; } } @mixin button-block { display: block; width: 100%; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } @mixin button-outline($color: $button-o-color, $border-color: $button-o-border-color, $font-size: $font-size-default, $color-hover: $button-o-color-hl, $border-color-hover: $button-o-border-color-hl, $border-background-hover: $button-o-background-color-hl) { @include button($color,$border-color,transparent,$font-size,$color-hover,$border-color-hover,$border-background-hover); } /** * Avatar + Profiles */ @mixin avatar($size: 50px, $stroke-width: 3px) { position: relative; width: $size+2*$stroke-width; height: $size+2*$stroke-width; margin-right: 1em; margin-bottom: 0.5em; display: inline-block; vertical-align: middle; &:before { position: absolute; left: 0; right: 0; content: ""; display: inline-block; width: $size; height: $size; border-radius: $size; vertical-align: middle; /*-webkit-box-shadow: 0 0 5px 0 rgba(0, 0, 0, .3); -moz-box-shadow: 0 0 5px 0 rgba(0, 0, 0, .3); box-shadow: 0 0 5px 0 rgba(0, 0, 0, .3);*/ } &[data-letters]:before { content: attr(data-letters); font-size: font-size($size*0.4); font-weight: 400; line-height: $size; text-align: center; color: white; background: $color-bg-tertiary; border: $stroke-width $color-stroke-grey solid; } &[data-staff] { margin-right: #{$size*0.56-(($size+2*$stroke-width)*0.14*2)}; &:after { @include icon("\ec66",font-size($size*0.14),4em); position: absolute; left: 100%; bottom: -0.5em; margin-left: -#{($size+2*$stroke-width)*0.14*2}; padding: 0; width: 4em; height: 4em; -webkit-border-radius: 4em; -moz-border-radius: 4em; border-radius: 4em; color: $color-bg-tertiary; background-color: $color-bg-secondary; border: $size*0.02 $color-stroke-grey solid; text-align: center; vertical-align: middle; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } } > * { position: relative; -webkit-border-radius: $size; -moz-border-radius: $size; border-radius: $size; max-width: $size; max-height: $size; border: $stroke-width $color-stroke-grey solid; } } @mixin font-size($size,$ascendant-font-size: $font-size-default, $mm: 0.7, $tm: 0.8) { $fz: $size / $ascendant-font-size * 1rem; font-size: $fz; @include for-tablet { font-size: $fz * $tm; } @include for-mobile { font-size: $fz * $mm; } }