html {
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
}

* {
    margin: 0;
    padding: 0;
}

*,
*::before,
*::after {
    -webkit-box-sizing: inherit;
            box-sizing: inherit;
}

html,
body {
    width: 100%;
    height: 100%;
}

html {
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
	font-size: 62.5%;
}

body {
    background: #fff;
    font-family: 'Nunito', sans-serif;
	font-weight: 300;
	font-size: 1.5rem;
	letter-spacing: 0.03rem;
	line-height: 1.5;
	color: #232335;
	text-rendering: optimizeLegibility;
}

.container {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    width: 100vw;
    min-height: 100vh;
}

.header {
    padding: 2rem;
}

/* Styles for Typography*/

h1 {
    font-family: 'Open Sans', sans-serif;
    font-weight: 300;
    font-size: 3.2rem;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: #00a0da;
}

h3 {
    font-size: 2.4rem;
    font-weight: bold;
    margin-bottom: 1rem;
    color: #00a0da;
}

h6 {
    font-size: 1.8rem;
    font-weight: bold;
}


/* Styles for Info Panel */

.info-panel {
    text-align: left;
    min-width: 60rem;
    margin-bottom: 2rem;
    padding: 0 1rem;
}

.stars,
.moves,
.timer {
    margin: 0;
    padding: 0;
    display: inline-block;
    margin-right: 3rem;
}

.moves {
    min-width: 7rem;
    text-align: left;
}

.star {
    list-style: none;
    display: inline-block;
    color: #ffcd04;
    text-align: left;
    margin-left: -3px;
}

.star-removed {
    opacity: 0.5;
    color: #c9c7bf;
}

.restart {
    float: right;
    cursor: pointer;
    color: #00bdc1;
}

.restart:hover {
    color: #14e0f7;
}


/* Styles for Card Deck */

.deck {
    height: 100%;
    width: 100%;
    background: linear-gradient(165deg, #47cbcd 20%, #7f7bd7 100%);
    padding: 3rem 5%;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    -ms-flex-line-pack: distribute;
        align-content: space-around;
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    -webkit-perspective: 350rem;
            perspective: 350rem;
}

.card {
    height: 15rem;
    width: 15rem;
    margin: 1rem 2rem;
    background: linear-gradient(135deg, #d5f5fa 0%, #e7fbff 65%, #20ccfc 65%, #1ac7f7 75%,#43f1f4 76%, #43f1f4 82%, #96a1ff 83%, #9ca6ff 100%);
    color: #fff;
    font-size: 0;
    border-radius: 8px;
    cursor: pointer;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-shadow: 4px 2px 1rem 0 rgba(37, 89, 131, 0.4);
            box-shadow: 4px 2px 1rem 0 rgba(37, 89, 131, 0.4);
    -webkit-transition: font-size 0.3s cubic-bezier(0,.78,.37,1.21);
    transition: font-size 0.3s cubic-bezier(0,.78,.37,1.21); 
}

.card.open {
    -webkit-transform: rotateY(0);
            transform: rotateY(0);
    -webkit-transform-style: preserve-3d;
            transform-style: preserve-3d;
    background: #22cfff;
    cursor: default;
    -webkit-animation: flip 0.6s ease-in;
            animation: flip 0.6s ease-in;
}

.card.show,
.card.match {
    font-size: 6rem;
}

.card.match {
    cursor: default;
    background: #3ae1d3;
    -webkit-animation: jelly 0.6s 0.2s;
            animation: jelly 0.6s 0.2s;
}


/* Congrats Modal */

.modal-congrats {
    display: none;
    z-index: 1;
    position: fixed;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0,0,0,0.2);
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
}

.modal-content {
    position: relative;
    text-align: center;
    min-width: 50rem;
    min-height: 30rem;
    border-radius: 1rem;
    background: #f3fcff;
    padding: 4rem;
    -webkit-animation: bounceIn 0.6s cubic-bezier(0.21, 0.61, 0.35, 1);
            animation: bounceIn 0.6s cubic-bezier(0.21, 0.61, 0.35, 1);
}

.congrats-svg {
    width: 10rem;
    margin-bottom : 1rem;
}

.congrats-info {
    padding: 0.5rem 2rem;
    display: inline-block;
    margin: 2rem auto;
}

.congrats-item {
    text-align: left;
}

.info {
    display: inline-block;
    min-width: 13rem;
}

.info-summary {
    color: #09b7e7;
}


/* Modal Replay Button */

.modal-replayBtn {
    display: block;
    margin : 1rem auto;
    padding: 1rem 3rem;
    min-width: 4rem;
    border-radius: 2rem;
    border: none;
    background-color: #09b7e7;
    color: #fff;
    font-size: 1.6rem;
    text-transform: uppercase;
	letter-spacing: 0.1rem;
}

.modal-replayBtn:focus {
    outline: none;
}


/* Modal Close Button */

.modal-close {
    position: absolute;
    right: 3rem;
    top: 1rem;
    z-index: 2;
    font-size: 4rem;
    color: #06ddc8;
    -webkit-transition : ease-in 0.1s;
    transition : ease-in 0.1s;
}

.modal-close:hover,
.modal-close:focus {
    color: #2abbb9;
    text-decoration: none;
    cursor: pointer;
    -webkit-transform: scale(1.2);
            transform: scale(1.2);
}

/* Animation */

@-webkit-keyframes flip {
	0% {
		-webkit-transform: rotateY(90deg);
		        transform: rotateY(90deg);
		opacity: 0;
	}
	40% {
        -webkit-transform: rotateY(-15deg);
                transform: rotateY(-15deg);
	}
	60% {
		-webkit-transform: rotateY(10deg);
                transform: rotateY(10deg);
		opacity: 1;
	}
	80% {
		-webkit-transform: rotateY(-5deg);
		        transform: rotateY(-5deg);
    }
    100% {
		-webkit-transform: rotateY(0deg);
		        transform: rotateY(0deg);
	}
}

@keyframes flip {
	0% {
		-webkit-transform: rotateY(90deg);
		        transform: rotateY(90deg);
		opacity: 0;
	}
	40% {
        -webkit-transform: rotateY(-15deg);
                transform: rotateY(-15deg);
		opacity: 1;
	}
	60% {
		-webkit-transform: rotateY(10deg);
		        transform: rotateY(10deg);
	}
	80% {
		-webkit-transform: rotateY(-5deg);
		        transform: rotateY(-5deg);
    }
    100% {
		-webkit-transform: rotateY(0deg);
		        transform: rotateY(0deg);
	}
}

@-webkit-keyframes jelly {
    0%, 100% {
      -webkit-transform: scale3d(1, 1, 1);
              transform: scale3d(1, 1, 1);
    }
    30% {
      -webkit-transform: scale3d(1.05, 0.9, 1);
              transform: scale3d(1.05, 0.9, 1);
    }
    40% {
      -webkit-transform: scale3d(0.9, 1.05, 1);
              transform: scale3d(0.9, 1.05, 1);
    }
}

@keyframes jelly {
    0%, 100% {
      -webkit-transform: scale3d(1, 1, 1);
              transform: scale3d(1, 1, 1);
    }
    30% {
      -webkit-transform: scale3d(1.05, 0.9, 1);
              transform: scale3d(1.05, 0.9, 1);
    }
    40% {
      -webkit-transform: scale3d(0.9, 1.05, 1);
              transform: scale3d(0.9, 1.05, 1);
    }
}
 
@-webkit-keyframes bounceIn {
    0%, 10% {
        opacity: 0;
        -webkit-transform: scale3d(0, 0, 0);
                transform: scale3d(0, 0, 0);
    }
    20% {
        -webkit-transform: scale3d(.5, .5, .5);
                transform: scale3d(.5, .5, .5);
    }
    30% {
        -webkit-transform: scale3d(1.1, 1.1, 1.1);
                transform: scale3d(1.1, 1.1, 1.1);
    }
    50% {
        opacity: 1;
        -webkit-transform: scale3d(.9, .9, .9);
                transform: scale3d(.9, .9, .9);
    }
    70% {
        -webkit-transform: scale3d(1.03, 1.03, 1.03);
                transform: scale3d(1.03, 1.03, 1.03);
    }
    90% {
        -webkit-transform: scale3d(.97, .97, .97);
                transform: scale3d(.97, .97, .97);
    }
    100% {
        opacity: 1;
        -webkit-transform: scale3d(1, 1, 1);
                transform: scale3d(1, 1, 1);
    }
}
 
@keyframes bounceIn {
    0%, 10% {
        opacity: 0;
        -webkit-transform: scale3d(0, 0, 0);
                transform: scale3d(0, 0, 0);
    }
    20% {
        -webkit-transform: scale3d(.5, .5, .5);
                transform: scale3d(.5, .5, .5);
    }
    30% {
        -webkit-transform: scale3d(1.1, 1.1, 1.1);
                transform: scale3d(1.1, 1.1, 1.1);
    }
    50% {
        opacity: 1;
        -webkit-transform: scale3d(.9, .9, .9);
                transform: scale3d(.9, .9, .9);
    }
    70% {
        -webkit-transform: scale3d(1.03, 1.03, 1.03);
                transform: scale3d(1.03, 1.03, 1.03);
    }
    90% {
        -webkit-transform: scale3d(.97, .97, .97);
                transform: scale3d(.97, .97, .97);
    }
    100% {
        opacity: 1;
        -webkit-transform: scale3d(1, 1, 1);
                transform: scale3d(1, 1, 1);
    }
}