@use 'sass:color'; // Core button style // Note that these styles include methods to render buttons the same x-browser, described here: // http: //cbjdigital.com/blog/2010/08/bulletproof_css_input_button_heights // input[type=submit], // input[type=reset], // input[type=button], .button { border-radius: 3px; font-family: $font-sans; width: auto; height: 2.4em; padding: 0 1em; font-size: 0.9em; font-weight: normal; vertical-align: middle; display: inline-block; background-color: $color-button; border: 1px solid $color-button; color: $color-white; text-decoration: none; white-space: nowrap; position: relative; overflow: hidden; box-sizing: border-box; -webkit-font-smoothing: auto; // stylelint-disable-next-line property-no-vendor-prefix -moz-appearance: none; transition: background-color 0.1s ease; &:hover { color: $color-teal; } &.yes { background-color: $color-button-yes; border: 1px solid $color-button-yes; &.button-secondary { border: 1px solid $color-button-yes; color: $color-button-yes; background-color: transparent; } &:hover { color: $color-white; border-color: transparent; background-color: $color-button-yes-hover; } &.button-nobg:hover { color: $color-button-yes; background-color: transparent; } } &.warning { background-color: $color-button-warning; border: 1px solid $color-button-warning; &.button-secondary { border: 1px solid $color-button-warning; color: $color-button-warning; background-color: transparent; } &:hover { color: $color-white; border-color: transparent; background-color: $color-button-warning-hover; } &.button-nobg:hover { color: $color-button-warning; background-color: transparent; } } &.no, &.serious { background-color: $color-button-no; border: 1px solid $color-button-no; &.button-secondary { border: 1px solid $color-button-no; color: $color-button-no; background-color: transparent; } &:hover { color: $color-white; border-color: transparent; background-color: $color-button-no-hover; } &.button-nobg:hover { color: $color-button-no; background-color: transparent; } } &.button-nobg { border: 0; background-color: transparent; } &.bicolor { border: 1px solid transparent; padding-left: 3.5em; &:before { // iconfont font-size: 1rem; position: absolute; left: 0; top: 0; width: 2em; line-height: 1.85em; height: 100%; text-align: center; background-color: rgba(0, 0, 0, 0.2); display: block; border-top-left-radius: inherit; border-bottom-left-radius: inherit; } .icon-wrapper { background-color: rgba(0, 0, 0, 0.2); display: block; position: absolute; left: 0; top: 0; width: 3em; line-height: 1.85em; height: 100%; text-align: center; border-top-left-radius: inherit; border-bottom-left-radius: inherit; } &.button--icon { &:before { display: none; // TODO: remove once the icon font styles are gone } .icon { @include svg-icon(1rem); padding: 0.75em; } } &.button--icon-flipped { .icon { transform: scaleX(-1); } } &.button-secondary { border: 1px solid rgba(0, 0, 0, 0.2); } } &.button-small.bicolor { padding-left: 3.5em; .icon-wrapper { width: 2em; } &.button--icon .icon { @include svg-icon(0.9rem); padding: 0.25em; } } // + input[type=submit], // + input[type=reset], // + input[type=button], + .button { // + button { margin-left: 1em; } // A completely unstyled button &.unbutton { border-radius: 0; width: auto; height: auto; padding: 0; font-size: inherit; font-weight: normal; vertical-align: middle; display: inline; background-color: transparent; border: 0; color: inherit; text-decoration: none; white-space: nowrap; position: relative; overflow: hidden; box-sizing: border-box; -webkit-font-smoothing: auto; // stylelint-disable-next-line property-no-vendor-prefix -moz-appearance: none; &:hover, &:focus, &:active { background-color: transparent; } } // stylelint-disable-next-line no-duplicate-selectors &:hover { background-color: $color-button-hover; color: $color-white; border-color: transparent; &.hover-no { background-color: $color-button-no; } } &.button-longrunning { span { // iconfont @include transition(all 0.3s ease); transform: scale(0.9); display: inline-block; height: 0.9em; position: relative; opacity: 0; width: 0; visibility: hidden; text-align: center; padding-right: 0; } em { font-style: normal; } &-active { display: inline-flex; justify-content: center; align-items: center; } &-active span { // iconfont transform: scale(1); visibility: visible; width: 1em; height: 1em; opacity: 0.8; padding-right: 0.5em; } span.icon-spinner:after { // iconfont text-align: center; position: absolute; left: 0; margin: 0; line-height: 1em; display: inline-block; font-size: 1em; } svg.icon-spinner { @include transition(all 0.3s ease); display: none; } &-active svg.icon-spinner { @include svg-icon(); display: inline-block; opacity: 0.8; padding: 0; } &-active .button-longrunning__icon { display: none; } } &:disabled, &[disabled], &.disabled { background-color: $color-grey-3; border-color: $color-grey-3; color: $color-grey-2; cursor: default; } &.button-secondary:disabled, &.button-secondary[disabled], &.button-secondary.disabled { background-color: $color-white; border-color: $color-grey-3; color: $color-grey-3; } &.button-nostroke { border: 0; } &.button-strokeonhover { border: 1px solid transparent; &:hover { border-color: $color-grey-2; } &.button-nobg:hover { background-color: transparent; } } &.text-notransform { text-transform: initial; } &.button--icon { .icon { @include svg-icon(1.5em); } } @include media-breakpoint-up(sm) { font-size: 0.95em; padding: 0 1.4em; height: 3em; &.bicolor { padding-left: 3.7em; &:before { width: 2em; line-height: 2.2em; font-size: 1.1rem; } } &.button-small.bicolor { // line-height: 2.2em; padding-left: 3em; &:before { width: 1.8em; line-height: 1.65em; } } } } .button-small { padding: 0 0.8em; height: 2em; font-size: 0.95em; } .button-secondary { color: $color-button; background-color: transparent; } // Buttons which are only an icon .button.icon.text-replace { // iconfont font-size: 0; // unavoidable duplication of setting in icons.scss width: 1.8rem; height: 1.8rem; &:before { line-height: 1.7em; } @include media-breakpoint-up(sm) { width: 2.2rem; height: 2.2rem; &:before { line-height: 2.1em; } &.button-small { height: 1.8rem; width: 1.8rem; // stylelint-disable-next-line max-nesting-depth &:before { line-height: 1.7em; } } } } .button--icon.text-replace { font-size: 0; text-align: center; .icon { font-size: initial; @include svg-icon(1rem, middle); padding: 0.5em; } &.button-small { line-height: 1.7rem; height: 1.8rem; width: 1.8rem; .icon { padding: 0.25em; } } @include media-breakpoint-up(sm) { width: 2.2rem; height: 2.2rem; } } button.button.bicolor .icon-wrapper { line-height: 1.65em; // work around differences in a and button elements } .button-neutral { color: $color-grey-2; &:hover { color: $color-teal; } } .yes { background-color: $color-button-yes; border: 1px solid $color-button-yes; &.button-secondary { border: 1px solid $color-button-yes; color: $color-button-yes; background-color: transparent; } &:hover { color: $color-white; border-color: transparent; background-color: $color-button-yes-hover; } &.button-nobg:hover { color: $color-button-yes; background-color: transparent; } } .no, .serious { background-color: $color-button-no; border: 1px solid $color-button-no; &.button-secondary { border: 1px solid $color-button-no; color: $color-button-no; background-color: transparent; } &:hover { color: $color-white; border-color: transparent; background-color: $color-button-no-hover; } &.button-nobg:hover { color: $color-button-no; background-color: transparent; } } .button-nobg { border: 0; background-color: transparent; } .bicolor { border: 0; padding-left: 3.5em; &:before { font-size: 1rem; position: absolute; left: 0; top: 0; width: 2em; line-height: 1.85em; height: 100%; text-align: center; background-color: rgba(0, 0, 0, 0.2); display: block; } } .button-small.bicolor { padding-left: 3.5em; &:before { width: 2em; font-size: 0.8rem; line-height: 1.65em; } } a.button { line-height: 2.4em; height: auto; &.button-small { line-height: 1.85em; } @include media-breakpoint-up(sm) { line-height: 2.9em; } } // Special styles to counteract Firefox's completely unwarranted assumptions about button styles input[type='submit'], input[type='reset'], input[type='button'], button { padding: 0 1em; @include media-breakpoint-up(sm) { &.button-small { height: 2em; } } } .button-group { @include clearfix; input[type='submit'], input[type='reset'], input[type='button'], .button, button { border-radius: 0; float: left; margin-right: 1px; margin-left: 0; &:only-child { border-radius: 3px; } &:first-child { border-radius: 3px 0 0 3px; } &:last-child { border-radius: 0 3px 3px 0; margin-right: 0; } } &.button-group-square { &, input[type='submit'], input[type='reset'], input[type='button'], .button, button { border-radius: 0; } } } .multiple { padding: 0; max-width: 1024px - 50px; overflow: hidden; > li { @include row(); border-radius: 2px; position: relative; overflow: hidden; background-color: $color-white; padding: 1em 10em 1em 1.5em; // 10em padding leaves room for controls margin-bottom: 1em; border: 1px solid color.adjust($color-grey-4, $lightness: 3%); // really trying to avoid creating more greys, but this one is better than grey 4 or 5 } &.moving { position: relative; } li.moving { position: absolute; width: 100%; } fieldset { padding-top: 0; padding-bottom: 0; } // Object controls .controls { position: absolute; z-index: 1; right: 1em; top: 1em; color: $color-white; li { float: left; margin-right: 1px; &:last-child { margin-right: 0; } } .disabled { display: none; visibility: hidden; } } } // wrapper around add button for multiple objects .add { font-weight: 700; cursor: pointer; margin-top: 0; margin-bottom: 0; padding-top: 1em; padding-bottom: 2em; clear: both; }