html,
body {
  width: 100%;
  height: 100%;
  overflow: hidden;
}
body {
  font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
  font-size: 15px;
  line-height: 1em;
  color: black;
  background-color: black;
}
h2 {
  font-size: 20px;
  margin-bottom: 0.6em;
}
p {
  line-height: 1.3;
  margin-bottom: 0.7em;
}
b {
  font-weight: bold;
}
a {
  color: black;
  text-decoration: none;
}
a.button {
  display: inline-block;
  padding: 10px;
}
.table {
  display: table;
}
.table > .table-cell {
  display: table-cell;
  text-align: center;
  vertical-align: middle;
}
input[type="range"] {
  -webkit-appearance: none;
  appearance: none;
  width: 100%;
  height: 1.6em;
  background: #d3d3d3;
  outline: none;
}
input[type="range"]::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 1em;
  height: 1.6em;
  background: #93ffd8;
  cursor: pointer;
}
input[type="range"]::-moz-range-thumb {
  width: 1em;
  height: 1.6em;
  background: #93ffd8;
  cursor: pointer;
}
#main {
  width: 100%;
  height: 100%;
  background-color: black;
  background: url('img/background1.jpg');
  background-size: cover;
  background-repeat: no-repeat;
  padding-top: 3em;
}
#interface {
  position: absolute;
  top: 0.2em;
  left: 0;
  width: 100%;
  height: 2em;
  padding: 0 2em;
  z-index: 100;
  -webkit-user-select: none;
  user-select: none;
}
#interface .settings .title {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  padding: 0 2em;
  font-size: 17px;
  line-height: 1.7em;
  font-weight: bold;
  color: #ffffffb5;
  opacity: 1;
  pointer-events: none;
  transition: opacity 0.8s;
}
#interface .settings .options {
  opacity: 0;
  transition: opacity 0.8s;
}
#interface .settings:hover .title {
  opacity: 0;
}
#interface .settings:hover .options {
  opacity: 1;
}
#interface .button {
  background-color: #ffffffb5;
}
#interface .button:hover {
  background-color: #b3ffb5b5;
}
#interface #score {
  display: inline-block;
  position: absolute;
  left: 50%;
  top: 0.2em;
  padding: 0 0.4em;
  transform: translateX(-50%);
  border-radius: 4px;
  font-size: 17px;
  line-height: 1.7em;
  font-weight: bold;
  color: #ffffff;
}
#interface #title {
  display: inline-block;
  position: absolute;
  top: 0;
  right: 0;
  font-size: 17px;
  line-height: 1.7em;
  font-weight: bold;
  color: #ffffffb5;
  padding: 0 2em;
  z-index: 100;
}
#new-game {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%,-50%);
  width: 25em;
  height: 25em;
  background-color: white;
  display: none;
  z-index: 100;
}
#new-game.active {
  display: block;
}
#new-game .content {
  position: relative;
  height: 100%;
  padding: 1em;
}
#new-game .content .close {
  position: absolute;
  top: 1.1em;
  right: 1em;
  cursor: pointer;
}
#new-game .content .module {
  position: relative;
  width: 100%;
  margin-bottom: 0.5em;
}
#new-game .content .module .label {
  position: absolute;
  top: 0;
  left: 0;
  width: 4em;
}
#new-game .content .module .options {
  padding-left: 4.5em;
  width: 100%;
}
#new-game .content .module.help .label {
  width: 8em;
}
#new-game .content .module.help .options {
  padding-left: 8.5em;
}
#new-game .content .module.help .options .button {
  width: 2.5em;
}
#new-game .content p.footer {
  position: absolute;
  bottom: 0;
  right: 1em;
}
.module {
  display: inline-block;
  height: 2em;
  -webkit-user-select: none;
  user-select: none;
}
.module .label {
  display: inline-block;
  line-height: 2em;
  padding-right: 0.3em;
}
.module .button {
  display: inline-block;
  height: 1.6em;
  width: auto;
  margin: 0.2em 0;
  padding: 0 0.4em;
  text-align: center;
  border: 1px solid #4b4b4b;
  border-radius: 4px;
  line-height: 1.5em;
  cursor: pointer;
}
.module .button.active,
.module .button:hover {
  background-color: #b3ffb5;
}
.module .options {
  display: inline-block;
}
.module .options.buttons {
  display: inline-block;
  height: 2em;
  vertical-align: top;
}
.module .options.buttons .button {
  width: 1.6em;
  margin: 0.2em;
  padding: 0;
}
.module .options.slider {
  display: inline-block;
  height: 1.6em;
  width: 3em;
  margin: 0.2em 0;
}
#playground {
  position: absolute;
  top: 1.8em;
  bottom: 0;
  left: 0;
  width: 100%;
  opacity: 1;
  transition: opacity 0.4s;
  -webkit-user-select: none;
  user-select: none;
}
#playground.hide {
  opacity: 0;
}
#playground:before {
  content: " ";
  position: absolute;
  top: -2em;
  left: 0;
  width: 100%;
  bottom: 0;
  opacity: 0;
}
#playground.success:before {
  background-color: #1ee95f;
  animation-name: opacity-animation;
  animation-duration: 1.5s;
  animation-delay: 0.8s;
  animation-timing-function: ease-in;
  animation-iteration-count: 1;
  animation-play-state: running;
}
#playground.error:before {
  background-color: #e91e63;
  animation-name: opacity-animation;
  animation-duration: 1.5s;
  animation-delay: 0.8s;
  animation-timing-function: ease-in;
  animation-iteration-count: 1;
  animation-play-state: running;
}
@-webkit-keyframes opacity-animation {
  10% {
    opacity: 0;
  }
  50.0% {
    opacity: 0.2;
  }
  100.0% {
    opacity: 0;
  }
}
@keyframes opacity-animation {
  10% {
    opacity: 0;
  }
  50.0% {
    opacity: 0.2;
  }
  100.0% {
    opacity: 0;
  }
}
.cell {
  position: absolute;
  perspective: 50rem;
}
.card {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 0;
  height: 0;
  transform: translate(-50%,-50%) rotateY(-180deg) scale(1);
  -webkit-transform-style: preserve-3d;
  transform-style: preserve-3d;
  transition: all 0.8s;
  -webkit-user-select: none;
  user-select: none;
}
.card.open {
  transform: translate(-50%,-50%) rotateY(0) scale(1.2);
  pointer-events: none;
}
.card.done {
  transform: translate(-50%,-50%) rotateY(0) scale(1);
  pointer-events: none;
}
.card.visited:before {
  background-color: #77b19b;
}
.card:before {
  content: " ";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: #778cb1;
  z-index: -1;
  border: 4px solid #E2E8DD;
  background-image: url('img/heart.svg');
  background-size: 16%;
  background-repeat: repeat;
  background-position: center;
}
.card img {
  max-width: 100%;
  max-height: 100%;
  backface-visibility: hidden;
}
