@import 'bourbon'; // http://bourbon.io/ @import '../partials/variables'; // colors, fonts etc... @import '../partials/mixins'; // custom mixins @import '../partials/layout'; // responsive grid and media queries /* -------------------------------- Primary style -------------------------------- */ *, *::after, *::before { box-sizing: border-box; } html { font-size: 62.5%; } body { font: { size: 1.6rem; family: $primary-font; // variables inside partials > _variables.scss } color: $color-1; background-color: $color-3; } a { color: $color-2; text-decoration: none; } /* -------------------------------- Patterns - reusable parts of our design -------------------------------- */ .cd-btn { display: inline-block; padding: 1.6em 2.4em; font-size: 1.4rem; letter-spacing: .15em; color: $color-3; font-weight: 700; text-transform: uppercase; background-color: $color-2; box-shadow: 0 2px 10px rgba(#000, .08); @include font-smoothing; @include transition(box-shadow .3s); .no-touch &:hover { box-shadow: 0 6px 20px rgba(#000, .1); } } /* -------------------------------- Typography -------------------------------- */ h1 { font-size: 2.6rem; line-height: 1; margin-bottom: 1em; font-family: $secondary-font; font-style: italic; @include MQ(M) { font-size: 5rem; } } /* -------------------------------- Main Content -------------------------------- */ .cd-main-content { position: relative; z-index: 1; width: 100%; height: 100vh; /* vertically align its content */ display: table; background-color: $color-5; .center { /* vertically align inside parent element */ display: table-cell; vertical-align: middle; text-align: center; } } /* -------------------------------- Modal window -------------------------------- */ .cd-modal { position: fixed; top: 0; left: 0; z-index: 3; height: 100%; width: 100%; overflow: hidden; background: $color-4 url(../img/modal-bg.jpg) no-repeat center center; background-size: cover; opacity: 0; visibility: hidden; @include transition(opacity .3s 0s, visibility 0s .3s); .modal-content { height: 100%; overflow-y: auto; padding: 3em 5%; color: $color-5; @include font-smoothing; } h1 { text-align: center; &::after { /* ink/brush separation */ content: ''; display: block; width: 130px; height: 18px; background: url(../img/ink-separation.svg) no-repeat center center; margin: .2em auto 0; } } p { line-height: 1.6; margin: 2em auto; max-width: 800px; } .modal-close { /* 'X' icon */ position: absolute; z-index: 1; top: 20px; right: 5%; height: 45px; width: 45px; border-radius: 50%; background: rgba(#000, .3) url(../img/cd-icon-close.svg) no-repeat center center; /* image replacement */ overflow: hidden; text-indent: 100%; white-space: nowrap; visibility: hidden; opacity: 0; @include transform(scale(0)); @include transition(transform .3s 0s, visibility 0s .3s, opacity .3s 0s); .no-touch &:hover { background-color: rgba(#000, .5); } } &.visible { opacity: 1; visibility: visible; @include transition(opacity .7s, visibility 0s); .modal-content { /* this fixes the buggy scrolling on webkit browsers - mobile devices only - when overflow property is applied */ -webkit-overflow-scrolling: touch; } .modal-close { visibility: visible; opacity: 1; @include transition(transform .3s 0s, visibility 0s 0s, opacity .3s 0s); @include transform(scale(1)); } } @include MQ(L) { .modal-content { padding: 6em 5%; } .modal-close { height: 60px; width: 60px; } p { font-size: 2rem; } } } /* -------------------------------- Transition Layer -------------------------------- */ .cd-transition-layer { position: fixed; top: 0; left: 0; z-index: 2; height: 100%; width: 100%; opacity: 0; visibility: hidden; overflow: hidden; .bg-layer { position: absolute; left: 50%; top: 50%; @include transform(translateY(-50%) translateX(-2%)); /* its dimentions will be overwritten using jQuery to proportionally fit the viewport */ height: 100%; /* our sprite is composed of 25 frames */ width: 2500%; background: url(../img/ink.png) no-repeat 0 0; background-size: 100% 100%; } &.visible { opacity: 1; visibility: visible; } &.opening .bg-layer { @include animation(cd-sequence .8s steps(24)); @include animation-fill-mode(forwards); } &.closing .bg-layer { @include animation(cd-sequence-reverse .8s steps(24)); @include animation-fill-mode(forwards); } .no-cssanimations & { display: none; } } @include keyframes(cd-sequence) { 0% { /* translateX(-2%) is used to horizontally center the first frame inside the viewport */ @include transform(translateY(-50%) translateX(-2%)); } 100% { /* translateX(-98%) (2% + 96) is used to horizontally center the last frame inside the viewport */ @include transform(translateY(-50%) translateX(-98%)); } } @include keyframes(cd-sequence-reverse) { 0% { @include transform(translateY(-50%) translateX(-98%)); } 100% { @include transform(translateY(-50%) translateX(-2%)); } }