body {
  position: fixed;
  width: 100%;
  margin: 0;
  font-family: 'iosevka ss05', Menlo, 'Andale Mono', monospace;
  color: #383838;
  font-weight: bold;
  touch-action: manipulation;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
}
.tetris {
  position: relative;
  height: 100vh;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: 1em;
  box-sizing: border-box;
  background: #2a2a2a;
}
.row {
  flex: 1;
  display: flex;
  justify-content: center;
}
@media (min-width: 400px) {
  .row {
    border: 0.5px solid #383838;
  }
}

.left {
  display: none;
}
@media (min-width: 768px) {
  .left {
    display: block;
    flex: 1;
  }
}
.center {
  flex: 3;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding-bottom: 2em;
  transition: opacity 0.4s ease-in-out;
  opacity: 1;
}
.center.is-paused {
  opacity: 0.65;
}
.center.is-paused.game-over {
  opacity: 1;
}
@media (min-width: 400px) {
  padding-bottom: 0;
}
.board {
  position: relative;
  align-self: center;
  display: grid;
  width: 100%;
  max-width: 38vh;
  margin: 0 auto;
  border: 1.5px solid #383838;
}
.square {
  border-bottom: 0.5px solid #383838;
  border-left: 0.5px solid #383838;
  position: relative;
  padding-bottom: 100%;
}
.square.left-edge {
  border-left: 0.5px solid #383838;
}
.square.top-edge {
  border-top: 0.5px solid #383838;
}
.right {
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: center;
  text-align: center;
}
@media (min-width: 400px) {
  .right {
    border-left: 0.5px solid #383838;
  }
}
.board-mini-container {
  height: 10vh;
  display: flex;
  justify-content: center;
  transition: opacity 0.4s ease-in-out;
  opacity: 1;
}
.board-mini-container.is-paused {
  opacity: 0.65;
}
.board-mini {
  position: relative;
  align-self: center;
  display: grid;
  border: 1px solid #383838;
}
.board-mini > div {
  width: 15px;
  height: 15px;
  border: 0.5px solid #383838;
}
@media (min-width: 768px) {
  .board-mini > div {
    width: 19px;
    height: 19px;
  }
}
@media (min-width: 1200px) {
  .board-mini > div {
    width: 24px;
    height: 24px;
  }
}
.rows-completed-container {
  padding: 9vh 0 15vh;
}
.rows-completed {
  padding: 0.2em 0.3em 0.1em;
  font-size: 46px;
  transition: border 0.2s ease-in-out;
  border: 1px solid #383838;
  cursor: default;
}
.rows-completed.is-paused {
  border: 1px solid #4a4a4a;
}
.level-container {
  position: relative;
  transition: opacity 0.4s ease-in-out;
  opacity: 1;
}
.level-container.is-paused {
  position: relative;
  opacity: 0.65 !important;
}
@media (min-width: 400px) {
  .level-mobile {
    display: none;
  }
}
.level-desktop {
  display: none;
}
@media (min-width: 400px) {
  .level-desktop {
    display: block;
  }
}
.level {
  font-size: 24px;
  position: absolute;
  transform: translateY(-50%);
  transform: translateX(-50%);
  transition: opacity 2.6s ease-in-out;
  opacity: 0;
}
.level.in {
  opacity: 1;
}

/* fade */

.fade-in-1 {
  transition: opacity 1.2s ease-in-out;
  opacity: 0;
}
.fade-in-2 {
  transition: opacity 6s ease-in-out;
  opacity: 0;
}
.has-initially-loaded,
.has-initially-loaded .fade-in-1,
.has-initially-loaded .fade-in-2 {
  opacity: 1;
}

/* hit areas for mobile */

.hit-area-container {
  position: absolute;
  flex-direction: column;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 40%;
  z-index: 1;
  display: flex;
  -webkit-tap-highlight-color: transparent;
}
@media (min-width: 768px) {
  display: none;
}
.hit-area-row {
  display: flex;
  flex: 1;
  -webkit-tap-highlight-color: transparent;
}
.hit-area-up,
.hit-area-left,
.hit-area-right,
.hit-area-down {
  -webkit-tap-highlight-color: transparent;
  flex: 1;
}
.hit-area-up:active,
.hit-area-left:active,
.hit-area-right:active,
.hit-area-down:active {
  background: rgba(255, 255, 255, 0.03);
}
