@include keyframes(fadeIn) { 0% { opacity: 0; } 100% { opacity: 1; } } @include keyframes(fadeOut) { 0% { opacity: 1; } 100% { opacity: 0; } } @include keyframes(zoomIn) { 0% { @include transform(scale(1.1)); opacity: 0; } 100% { @include transform(scale(1)); opacity: 1; } } @include keyframes(zoomOut) { 0% { @include transform(scale(1)); opacity: 1; } 100% { @include transform(scale(1.1)); opacity: 0; } } .modal { $base-border-color: #dcdcdc !default; $base-border-radius: 3px !default; $base-background-color: #fff !default; $base-font-size: 1em !default; $base-line-height: 1.5em !default; $action-color: #477dca !default; $dark-gray: #333 !default; $light-gray: #ddd !default; $medium-screen: 40em !default; $large-screen: 53.75em !default; $base-font-color: $dark-gray !default; $modal-padding: 3em; $modal-background: $base-background-color; $modal-close-color: $light-gray; $modal-image-height: 135px; $modal-image-width: $modal-image-height; $modal-trigger-image-width: 300px; $fade-screen-background-base-color: #3F3F44; @include transition(width ease .3s); @include animation(zoomIn .2s ease-out); label { cursor: pointer; margin-bottom: 0; } label img { border-radius: $modal-trigger-image-width / 2; display: block; max-width: $modal-trigger-image-width; } .modal-header { padding: 20px $space; border-bottom: 1px solid #e5e5e5; } .modal-footer { padding: 20px $space; border-top: 1px solid #e5e5e5; } .modal-body { padding: $space; } .modal-state { display: none; } .modal-trigger { padding: 0.8em 1em; } .brand-details { margin-bottom: 0; .brand-logo { width: $brand-icon; height: $brand-icon; margin-right: 0; float: none; margin: $pad auto; } } .modal-fade-screen { // overlay @include position(fixed, 0); background-color: rgba($fade-screen-background-base-color, 0.80); opacity: 0; padding-top: 0.6em; text-align: left; transition: opacity 0.25s ease; visibility: hidden; z-index: 99999999999; .modal-bg { @include position(absolute, 0); cursor: pointer; } } .modal-close-x { @include position(absolute, 15px 15px nill nill); @include size(1.5em); @include animation(fadeOut .1s ease-out); @include animation(zoomOut .1s ease-out); background: $modal-background; cursor: pointer; &::after, &::before { @include position(absolute, 3px 3px 0 50%); @include size(0.15em 1.5em); background: $modal-close-color; content: ""; display: block; margin: -3px 0 0 -1px; transform: rotate(45deg); } &:hover::after, &:hover::before { background: darken($modal-close-color, 10%); } &::before { transform: rotate(-45deg); } } .modal-inner { background: $modal-background; border-radius: $base-border-radius; margin: auto; margin-top: 0; position: relative; overflow: hidden; margin-top: $pad; @include media(min-width 1400px) { margin-top: 10%; } @include media(min-width 1241px) { width: 50%; } @include media(max-width 559px) { width: 95%; } h1 { color: $base-font-color; text-align: left; text-transform: capitalize; } p { color: $base-font-color; line-height: $base-line-height; } .modal-intro { margin-bottom: 1em; } .modal-content { color: $base-font-color; @include media($medium-screen) { columns: 2 8em; } } a.cta { color: $base-background-color; display: inline-block; margin-right: 0.5em; margin-top: 1em; &:last-child { padding: 0 2em; } } } .modal-state:checked + .modal-fade-screen { opacity: 1; visibility: visible; } .modal-state:checked + .modal-fade-screen .modal-inner { top: 0.5em; } } .modal-open { overflow: hidden; } // Based on code by Kasper Mikiewicz