html,
body {
  box-sizing: border-box;
  min-width: 100%;
  min-height: 100%;
  height: 100%;
}

body {
  margin: 0;
  padding: 15px;
  display: flex;
  cursor: default;
  -webkit-touch-callout: none;
  -ms-touch-callout: none;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  -ms-touch-action: none;
  touch-action: none;
}

.cookie-notice {
  display: none;
}

.app-notice {
  display: none;
}

.sharing {
  display: none;
}

.container {
  display: flex;
  width: 100%;
  margin: none;
}

.meta {
  flex: 1;
  max-width: 35%;
  display: flex;
  flex-direction: column;
}

.inner {
  flex: 1;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}

.score-container,
.best-container {
  margin-top: 0;
  flex: 1;
  flex-shrink: 0;
  padding-left: 0;
  padding-right: 0;
}

.score-container {
  margin-right: 10px;
}

.heading {
  display: flex;
  flex-direction: column;
}
.heading:after {
  display: none;
}

.scores-container {
  float: none;
  display: flex;
}

.above-game {
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  margin-top: 15px;
}
.above-game .restart-button {
  flex-shrink: 0;
}
.above-game:after {
  display: none;
}

.extras {
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
}
.extras.below-game {
  display: none;
  flex-basis: auto;
}

.game-explanation {
  margin-top: 0;
}

.game-intro {
  margin-top: 15px;
  flex-shrink: 0;
}

.game-intro,
.game-explanation {
  line-height: 1.3;
}

h1.title {
  line-height: 1;
  margin-bottom: 10px;
}

.game-container {
  flex-shrink: 0;
  margin-top: 0;
}

.footer {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 14px;
}
.footer,
.footer p {
  line-height: 1;
}
.footer p {
  margin: 0;
}

.score-sharing {
  display: none !important;
}

.mailing-list {
  display: none;
}

.game-message {
  padding-top: 0;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}
.game-message.game-won,
.game-message.game-over {
  display: flex;
}
.game-message.game-won p,
.game-message.game-over p {
  margin-top: 0 !important;
  animation: none !important;
}
@media screen and (min-width: 521px) and (max-width: 852px) {
  .game-message.game-won p,
  .game-message.game-over p {
    font-size: 30px;
  }
}

@media screen and (min-width: 521px) and (max-width: 1280px) {
  .tile.tile-128 .tile-inner,
  .tile.tile-256 .tile-inner,
  .tile.tile-512 .tile-inner {
    font-size: 48px;
  }
  .tile.tile-1024 .tile-inner,
  .tile.tile-2048 .tile-inner {
    font-size: 37px;
  }
  .tile.tile-super .tile-inner {
    font-size: 27px;
  }
  .game-container {
    padding: 16px;
    border-radius: 6px;
    width: 540px;
    height: 540px;
  }
  .grid-row {
    margin-bottom: 16px;
  }
  .grid-cell {
    width: 115px;
    height: 115px;
    margin-right: 16px;
    border-radius: 3px;
  }
  .tile,
  .tile .tile-inner {
    width: 115px;
    height: 115px;
    line-height: 115px;
    font-size: 60px;
  }
  .tile.tile-position-1-1 {
    -webkit-transform: translate(0px, 0px);
    -moz-transform: translate(0px, 0px);
    -ms-transform: translate(0px, 0px);
    transform: translate(0px, 0px);
  }
  .tile.tile-position-1-2 {
    -webkit-transform: translate(0px, 131px);
    -moz-transform: translate(0px, 131px);
    -ms-transform: translate(0px, 131px);
    transform: translate(0px, 131px);
  }
  .tile.tile-position-1-3 {
    -webkit-transform: translate(0px, 262px);
    -moz-transform: translate(0px, 262px);
    -ms-transform: translate(0px, 262px);
    transform: translate(0px, 262px);
  }
  .tile.tile-position-1-4 {
    -webkit-transform: translate(0px, 393px);
    -moz-transform: translate(0px, 393px);
    -ms-transform: translate(0px, 393px);
    transform: translate(0px, 393px);
  }
  .tile.tile-position-2-1 {
    -webkit-transform: translate(131px, 0px);
    -moz-transform: translate(131px, 0px);
    -ms-transform: translate(131px, 0px);
    transform: translate(131px, 0px);
  }
  .tile.tile-position-2-2 {
    -webkit-transform: translate(131px, 131px);
    -moz-transform: translate(131px, 131px);
    -ms-transform: translate(131px, 131px);
    transform: translate(131px, 131px);
  }
  .tile.tile-position-2-3 {
    -webkit-transform: translate(131px, 262px);
    -moz-transform: translate(131px, 262px);
    -ms-transform: translate(131px, 262px);
    transform: translate(131px, 262px);
  }
  .tile.tile-position-2-4 {
    -webkit-transform: translate(131px, 393px);
    -moz-transform: translate(131px, 393px);
    -ms-transform: translate(131px, 393px);
    transform: translate(131px, 393px);
  }
  .tile.tile-position-3-1 {
    -webkit-transform: translate(262px, 0px);
    -moz-transform: translate(262px, 0px);
    -ms-transform: translate(262px, 0px);
    transform: translate(262px, 0px);
  }
  .tile.tile-position-3-2 {
    -webkit-transform: translate(262px, 131px);
    -moz-transform: translate(262px, 131px);
    -ms-transform: translate(262px, 131px);
    transform: translate(262px, 131px);
  }
  .tile.tile-position-3-3 {
    -webkit-transform: translate(262px, 262px);
    -moz-transform: translate(262px, 262px);
    -ms-transform: translate(262px, 262px);
    transform: translate(262px, 262px);
  }
  .tile.tile-position-3-4 {
    -webkit-transform: translate(262px, 393px);
    -moz-transform: translate(262px, 393px);
    -ms-transform: translate(262px, 393px);
    transform: translate(262px, 393px);
  }
  .tile.tile-position-4-1 {
    -webkit-transform: translate(393px, 0px);
    -moz-transform: translate(393px, 0px);
    -ms-transform: translate(393px, 0px);
    transform: translate(393px, 0px);
  }
  .tile.tile-position-4-2 {
    -webkit-transform: translate(393px, 131px);
    -moz-transform: translate(393px, 131px);
    -ms-transform: translate(393px, 131px);
    transform: translate(393px, 131px);
  }
  .tile.tile-position-4-3 {
    -webkit-transform: translate(393px, 262px);
    -moz-transform: translate(393px, 262px);
    -ms-transform: translate(393px, 262px);
    transform: translate(393px, 262px);
  }
  .tile.tile-position-4-4 {
    -webkit-transform: translate(393px, 393px);
    -moz-transform: translate(393px, 393px);
    -ms-transform: translate(393px, 393px);
    transform: translate(393px, 393px);
  }
}

@media screen and (min-width: 521px) and (max-width: 1023px) {
  .score-container,
  .best-container {
    font-size: 20px;
    line-height: 45px;
  }
  .tile.tile-128 .tile-inner,
  .tile.tile-256 .tile-inner,
  .tile.tile-512 .tile-inner {
    font-size: 39px;
  }
  .tile.tile-1024 .tile-inner,
  .tile.tile-2048 .tile-inner {
    font-size: 30px;
  }
  .tile.tile-super .tile-inner {
    font-size: 26px;
  }
  .game-container {
    padding: 13px;
    border-radius: 6px;
    width: 440px;
    height: 440px;
  }
  .grid-row {
    margin-bottom: 13px;
  }
  .grid-cell {
    width: 93.75px;
    height: 93.75px;
    margin-right: 13px;
    border-radius: 3px;
  }
  .tile,
  .tile .tile-inner {
    width: 94px;
    height: 94px;
    line-height: 94px;
    font-size: 48px;
  }
  .tile.tile-position-1-1 {
    -webkit-transform: translate(0px, 0px);
    -moz-transform: translate(0px, 0px);
    -ms-transform: translate(0px, 0px);
    transform: translate(0px, 0px);
  }
  .tile.tile-position-1-2 {
    -webkit-transform: translate(0px, 106px);
    -moz-transform: translate(0px, 106px);
    -ms-transform: translate(0px, 106px);
    transform: translate(0px, 106px);
  }
  .tile.tile-position-1-3 {
    -webkit-transform: translate(0px, 213px);
    -moz-transform: translate(0px, 213px);
    -ms-transform: translate(0px, 213px);
    transform: translate(0px, 213px);
  }
  .tile.tile-position-1-4 {
    -webkit-transform: translate(0px, 320px);
    -moz-transform: translate(0px, 320px);
    -ms-transform: translate(0px, 320px);
    transform: translate(0px, 320px);
  }
  .tile.tile-position-2-1 {
    -webkit-transform: translate(106px, 0px);
    -moz-transform: translate(106px, 0px);
    -ms-transform: translate(106px, 0px);
    transform: translate(106px, 0px);
  }
  .tile.tile-position-2-2 {
    -webkit-transform: translate(106px, 106px);
    -moz-transform: translate(106px, 106px);
    -ms-transform: translate(106px, 106px);
    transform: translate(106px, 106px);
  }
  .tile.tile-position-2-3 {
    -webkit-transform: translate(106px, 213px);
    -moz-transform: translate(106px, 213px);
    -ms-transform: translate(106px, 213px);
    transform: translate(106px, 213px);
  }
  .tile.tile-position-2-4 {
    -webkit-transform: translate(106px, 320px);
    -moz-transform: translate(106px, 320px);
    -ms-transform: translate(106px, 320px);
    transform: translate(106px, 320px);
  }
  .tile.tile-position-3-1 {
    -webkit-transform: translate(213px, 0px);
    -moz-transform: translate(213px, 0px);
    -ms-transform: translate(213px, 0px);
    transform: translate(213px, 0px);
  }
  .tile.tile-position-3-2 {
    -webkit-transform: translate(213px, 106px);
    -moz-transform: translate(213px, 106px);
    -ms-transform: translate(213px, 106px);
    transform: translate(213px, 106px);
  }
  .tile.tile-position-3-3 {
    -webkit-transform: translate(213px, 213px);
    -moz-transform: translate(213px, 213px);
    -ms-transform: translate(213px, 213px);
    transform: translate(213px, 213px);
  }
  .tile.tile-position-3-4 {
    -webkit-transform: translate(213px, 320px);
    -moz-transform: translate(213px, 320px);
    -ms-transform: translate(213px, 320px);
    transform: translate(213px, 320px);
  }
  .tile.tile-position-4-1 {
    -webkit-transform: translate(320px, 0px);
    -moz-transform: translate(320px, 0px);
    -ms-transform: translate(320px, 0px);
    transform: translate(320px, 0px);
  }
  .tile.tile-position-4-2 {
    -webkit-transform: translate(320px, 106px);
    -moz-transform: translate(320px, 106px);
    -ms-transform: translate(320px, 106px);
    transform: translate(320px, 106px);
  }
  .tile.tile-position-4-3 {
    -webkit-transform: translate(320px, 213px);
    -moz-transform: translate(320px, 213px);
    -ms-transform: translate(320px, 213px);
    transform: translate(320px, 213px);
  }
  .tile.tile-position-4-4 {
    -webkit-transform: translate(320px, 320px);
    -moz-transform: translate(320px, 320px);
    -ms-transform: translate(320px, 320px);
    transform: translate(320px, 320px);
  }
}

@media screen and (min-width: 521px) and (max-width: 852px) {
  h1.title {
    font-size: 50px;
  }
  .score-container,
  .best-container {
    padding: 8px 0px;
    font-size: 15px;
    line-height: 36px;
  }
  .score-container:after,
  .best-container:after {
    font-size: 13px;
    top: 5px;
  }
  .game-intro {
    display: none;
  }
  .extras {
    justify-content: space-between;
    padding-top: 15px;
  }
  .game-explanation {
    font-size: 15px;
  }
  .footer p.attribution span {
    display: none;
  }
  .tile.tile-128 .tile-inner,
  .tile.tile-256 .tile-inner,
  .tile.tile-512 .tile-inner {
    font-size: 30px;
  }
  .tile.tile-1024 .tile-inner,
  .tile.tile-2048 .tile-inner {
    font-size: 20px;
  }
  .tile.tile-super .tile-inner {
    font-size: 15px;
  }
  .game-container {
    padding: 10px;
    border-radius: 6px;
    width: 330px;
    height: 330px;
  }
  .grid-row {
    margin-bottom: 10px;
  }
  .grid-cell {
    width: 70px;
    height: 70px;
    margin-right: 10px;
    border-radius: 3px;
  }
  .tile,
  .tile .tile-inner {
    width: 70px;
    height: 70px;
    line-height: 70px;
    font-size: 36px;
  }
  .tile.tile-position-1-1 {
    -webkit-transform: translate(0px, 0px);
    -moz-transform: translate(0px, 0px);
    -ms-transform: translate(0px, 0px);
    transform: translate(0px, 0px);
  }
  .tile.tile-position-1-2 {
    -webkit-transform: translate(0px, 80px);
    -moz-transform: translate(0px, 80px);
    -ms-transform: translate(0px, 80px);
    transform: translate(0px, 80px);
  }
  .tile.tile-position-1-3 {
    -webkit-transform: translate(0px, 160px);
    -moz-transform: translate(0px, 160px);
    -ms-transform: translate(0px, 160px);
    transform: translate(0px, 160px);
  }
  .tile.tile-position-1-4 {
    -webkit-transform: translate(0px, 240px);
    -moz-transform: translate(0px, 240px);
    -ms-transform: translate(0px, 240px);
    transform: translate(0px, 240px);
  }
  .tile.tile-position-2-1 {
    -webkit-transform: translate(80px, 0px);
    -moz-transform: translate(80px, 0px);
    -ms-transform: translate(80px, 0px);
    transform: translate(80px, 0px);
  }
  .tile.tile-position-2-2 {
    -webkit-transform: translate(80px, 80px);
    -moz-transform: translate(80px, 80px);
    -ms-transform: translate(80px, 80px);
    transform: translate(80px, 80px);
  }
  .tile.tile-position-2-3 {
    -webkit-transform: translate(80px, 160px);
    -moz-transform: translate(80px, 160px);
    -ms-transform: translate(80px, 160px);
    transform: translate(80px, 160px);
  }
  .tile.tile-position-2-4 {
    -webkit-transform: translate(80px, 240px);
    -moz-transform: translate(80px, 240px);
    -ms-transform: translate(80px, 240px);
    transform: translate(80px, 240px);
  }
  .tile.tile-position-3-1 {
    -webkit-transform: translate(160px, 0px);
    -moz-transform: translate(160px, 0px);
    -ms-transform: translate(160px, 0px);
    transform: translate(160px, 0px);
  }
  .tile.tile-position-3-2 {
    -webkit-transform: translate(160px, 80px);
    -moz-transform: translate(160px, 80px);
    -ms-transform: translate(160px, 80px);
    transform: translate(160px, 80px);
  }
  .tile.tile-position-3-3 {
    -webkit-transform: translate(160px, 160px);
    -moz-transform: translate(160px, 160px);
    -ms-transform: translate(160px, 160px);
    transform: translate(160px, 160px);
  }
  .tile.tile-position-3-4 {
    -webkit-transform: translate(160px, 240px);
    -moz-transform: translate(160px, 240px);
    -ms-transform: translate(160px, 240px);
    transform: translate(160px, 240px);
  }
  .tile.tile-position-4-1 {
    -webkit-transform: translate(240px, 0px);
    -moz-transform: translate(240px, 0px);
    -ms-transform: translate(240px, 0px);
    transform: translate(240px, 0px);
  }
  .tile.tile-position-4-2 {
    -webkit-transform: translate(240px, 80px);
    -moz-transform: translate(240px, 80px);
    -ms-transform: translate(240px, 80px);
    transform: translate(240px, 80px);
  }
  .tile.tile-position-4-3 {
    -webkit-transform: translate(240px, 160px);
    -moz-transform: translate(240px, 160px);
    -ms-transform: translate(240px, 160px);
    transform: translate(240px, 160px);
  }
  .tile.tile-position-4-4 {
    -webkit-transform: translate(240px, 240px);
    -moz-transform: translate(240px, 240px);
    -ms-transform: translate(240px, 240px);
    transform: translate(240px, 240px);
  }
}

@media screen and (max-width: 520px) {
  .container {
    flex-direction: column;
  }
  .extras.below-game {
    display: flex;
    flex-grow: 0;
    flex-shrink: 0;
  }
  h1.title {
    font-size: 40px;
  }
  .meta {
    max-width: none;
    flex-grow: 0;
    flex-shrink: 0;
    flex-basis: auto;
  }
  .above-game {
    flex-grow: 0;
    flex-shrink: 0;
    flex-direction: row;
    align-items: center;
  }
  .above-game .game-intro {
    margin-top: 0;
  }
  .above-game .restart-button {
    order: 1;
  }
  .extras {
    display: none;
  }
}
