.ghost {
  margin: 0;
  position: absolute;
  z-index: 2; }

* {
  font-family: 'Press Start 2P', sans-serif; }

body {
  margin: 0;
  overflow: hidden; }

.overflow-mask {
  background-color: #000;
  color: #fff;
  display: flex;
  height: 100vh;
  justify-content: center;
  margin: 0;
  overflow: hidden;
  position: relative;
  touch-action: manipulation; }

.backdrop {
  position: absolute;
  visibility: hidden; }

.fps-display {
  position: absolute;
  right: 10px;
  top: 10px;
  visibility: hidden; }

.preload-div {
  align-items: baseline;
  bottom: 0;
  display: flex;
  flex-wrap: wrap-reverse;
  position: absolute;
  visibility: hidden; }

.header-buttons {
  margin: 16px;
  position: absolute;
  width: 100%; }
  .header-buttons button {
    background: none;
    border: 0;
    color: #fff;
    cursor: pointer;
    outline: none;
    padding: 0; }
    .header-buttons button .material-icons {
      font-size: 40px; }

.paused-text {
  align-items: center;
  display: flex;
  font-size: 50px;
  height: 100%;
  position: absolute;
  user-select: none;
  visibility: hidden;
  z-index: 1; }

.game-ui {
  display: flex;
  flex-direction: column;
  justify-content: center; }
  .game-ui .one-up {
    animation: blink .6s infinite; }

@keyframes blink {
  0% {
    opacity: 0; }
  49% {
    opacity: 0; }
  50% {
    opacity: 1; } }
  .game-ui .row {
    display: flex; }
  .game-ui .top ._25 {
    width: 25%; }
  .game-ui .top ._50 {
    width: 50%; }
  .game-ui .top .column :first-child {
    text-align: center; }
  .game-ui .top .column :not(:first-child) {
    margin-right: calc(50% - 3em);
    text-align: right; }
  .game-ui .bottom {
    justify-content: space-between; }
    .game-ui .bottom .extra-lives {
      align-items: flex-start;
      display: flex; }
    .game-ui .bottom .fruit-display {
      display: flex;
      flex-direction: row-reverse; }

@media (orientation: landscape) {
  .game-ui {
    height: 100%; } }

@media (orientation: portrait) {
  .game-ui {
    height: 66%; } }

.loading-cover {
  background: #ffdf00;
  height: 100vh;
  position: absolute;
  top: 0;
  width: 50vw;
  z-index: 4; }

.left {
  left: 0;
  transition: left 0.5s 0.5s; }

.right {
  right: 0;
  transition: right 0.5s 0.5s; }

.main-menu-container {
  align-items: center;
  display: flex;
  flex-direction: column;
  height: 100%;
  opacity: 0;
  position: absolute;
  transition: opacity .25s;
  visibility: hidden;
  width: 100%;
  z-index: 5; }

.logo {
  height: 200px;
  margin-top: 25vh; }

.game-start {
  background-color: #fcc73f;
  border: 5px solid #231f20;
  border-radius: 10px;
  box-shadow: 5px 5px #ee2a29;
  color: #231f20;
  cursor: pointer;
  font-size: 48px;
  outline: none;
  padding: 16px; }
  .game-start:active {
    box-shadow: none;
    transform: translateX(5px) translateY(5px); }
  .game-start:disabled {
    cursor: default; }

.loading-container {
  background-color: #000;
  border: 5px solid #2121ff;
  border-radius: 10px;
  height: 48px;
  left: 50%;
  position: absolute;
  top: 50%;
  transform: translateX(-50%) translateY(-50%);
  transition: opacity 0.5s 1s;
  width: 500px;
  z-index: 5; }

.loading-pacman {
  animation: loading-animation 0.3s steps(4) infinite;
  background-color: #000;
  background-image: url("../app/style/graphics/spriteSheets/characters/pacman/pacman_right.svg");
  background-size: 192px;
  border-radius: 10px;
  height: 48px;
  position: absolute;
  transition: left 1s;
  width: 48px;
  z-index: 6; }

@keyframes loading-animation {
  100% {
    background-position: -192px; } }

.loading-dot-mask {
  background-color: #000;
  border-radius: 10px;
  height: 48px;
  left: 0;
  position: absolute;
  top: 0;
  transition: width 1s;
  z-index: -1; }

.loading-dot {
  background-image: url("../app/style/graphics/spriteSheets/pickups/pacdot.svg");
  height: 6px;
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 6px;
  z-index: -2; }

._5 {
  left: 5%; }

._10 {
  left: 10%; }

._15 {
  left: 15%; }

._20 {
  left: 20%; }

._25 {
  left: 25%; }

._30 {
  left: 30%; }

._35 {
  left: 35%; }

._40 {
  left: 40%; }

._45 {
  left: 45%; }

._50 {
  left: 50%; }

._55 {
  left: 55%; }

._60 {
  left: 60%; }

._65 {
  left: 65%; }

._70 {
  left: 70%; }

._75 {
  left: 75%; }

._80 {
  left: 80%; }

._85 {
  left: 85%; }

._90 {
  left: 90%; }

._95 {
  left: 95%; }

.movement-buttons {
  align-items: center;
  bottom: 0;
  display: flex;
  flex-direction: column;
  height: 34%;
  position: fixed;
  width: 100%; }
  .movement-buttons .row {
    display: flex;
    justify-content: space-between;
    margin-bottom: -3px; }
  .movement-buttons button {
    background: transparent;
    border: 3px solid #2121ff;
    border-radius: 5px;
    color: #2121ff;
    height: 7vh;
    outline: none;
    padding: 0;
    user-select: none; }
    .movement-buttons button:active {
      background: radial-gradient(closest-side, rgba(255, 255, 255, 0.25), transparent); }
  .movement-buttons .button-up {
    border-bottom: 0;
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0; }
  .movement-buttons .button-left {
    border-bottom-right-radius: 0;
    border-right: 0;
    border-top-right-radius: 0;
    margin-right: calc(7vh - 6px); }
  .movement-buttons .button-right {
    border-bottom-left-radius: 0;
    border-left: 0;
    border-top-left-radius: 0; }
  .movement-buttons .button-down {
    border-top: 0;
    border-top-left-radius: 0;
    border-top-right-radius: 0; }
  .movement-buttons .material-icons {
    font-size: 7vh;
    margin: -3px; }

@media (orientation: landscape) {
  .movement-buttons {
    visibility: hidden; } }

.error-message {
  color: #231f20;
  opacity: 0;
  position: absolute;
  top: 30vh;
  transition: opacity 0.5s;
  visibility: hidden;
  width: 50vw;
  z-index: 4; }
  .error-message .error-pacman {
    animation: error-animation 1.5s steps(12) infinite;
    background-image: url("../app/style/graphics/spriteSheets/characters/pacman/pacman_error.svg");
    background-size: 576px;
    height: 48px;
    margin-left: 10px;
    width: 48px;
    z-index: 6; }

@keyframes error-animation {
  100% {
    background-position: -576px; } }
  .error-message .header {
    display: flex;
    font-size: 50px;
    margin-bottom: 30px; }
  .error-message .body {
    font-size: 20px;
    line-height: 1.25; }

.maze-cover {
  background: #000;
  height: 100%;
  position: absolute;
  visibility: hidden;
  width: 100%;
  z-index: 3; }

.maze {
  margin: 0 auto;
  position: relative; }

.maze-img {
  position: absolute;
  user-select: none;
  width: 100%; }

.maze-row {
  display: flex; }

.dot-container {
  height: 100%;
  position: absolute;
  width: 100%; }

.pacman {
  margin: 0;
  position: absolute;
  z-index: 1; }

.power-pellet {
  animation: blink .3s infinite; }

@keyframes blink {
  0% {
    opacity: 0; }
  49% {
    opacity: 0; }
  50% {
    opacity: 1; } }
