*, *:after, *:before {
  box-sizing: inherit;
  margin: 0;
  padding: 0;
}

html {
  box-sizing: border-box;
}

body {
  font-family: monospace;
  color: #333;
  padding: 1.5rem;
}

.block input[disabled] + div:before, .block [data-state="1"]:not([readonly]) + div:before {
  /* content: '\00d7'; */
  color: #fff;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  line-height: 1.45rem;
  font-size: 1.8rem;
  text-align: center;
}

.hide {
  display: none !important;
}

.header {
  text-align: center;
}
.header h1 {
  margin: 1.5rem auto;
  letter-spacing: .4rem;
}
.header .new-game {
  padding: .5rem 1rem;
  border: 0.2rem solid rgba(51, 51, 51, 0.8);
  margin: 0 auto 1.5rem;
  color: #5b5b5b;
  font-family: inherit;
  background-color: #fff;
  cursor: pointer;
}
.header .new-game:hover, .header .new-game:active {
  background-color: #3f51b5;
  color: #fff;
}

.nav button {
  padding: 1rem;
  border: 0.2rem solid rgba(51, 51, 51, 0.8);
  margin: 1.5rem;
  color: #5b5b5b;
  font-family: inherit;
  font-size: 1rem;
  line-height: 0.5em;
  letter-spacing: -0.4em;
  white-space: pre;
  background: #fff;
  cursor: pointer;
  vertical-align: middle;
}
.nav button:hover, .nav button:active {
  background-color: #3f51b5;
  color: #fff;
}
.nav button span {
  pointer-events: none;
}
.nav button .empty {
  color: transparent;
}
.nav button span:last-child {
  display: block;
  margin-top: 1rem;
  font-size: .7rem;
  font-weight: bold;
  line-height: 1;
  letter-spacing: normal;
}

.block {
  position: relative;
  display: block;
  height: 2rem;
  width: 2rem;
}
.block input {
  position: absolute;
  z-index: 2;
  height: 100%;
  width: 100%;
  opacity: 0;
  cursor: pointer;
  margin-left: -16px;
}
.block input:checked, .block input[disabled] {
  cursor: default;
  pointer-events: none;
}
.block input[disabled] {
  cursor: not-allowed;
}
.block input[data-state="1"], .block input[data-state="2"] {
  cursor: help;
}
.block div {
  position: relative;
  z-index: 0;
  height: 100%;
  width: 100%;
  border: 0.2rem solid rgba(51, 51, 51, 0.3);
}
.block input:checked + div {
  background-color: #772e1f;
  border-color: 0.2rem solid rgba(51, 51, 51, 0.3);
}
.block input[disabled] + div {
  border-color: 0.2rem solid rgba(51, 51, 51, 0.3);
  background-color: #772e1f;
}
.block [data-state="1"]:not([readonly]) + div {
  background-color: #772e1f;
  border-color: 0.2rem solid rgba(51, 51, 51, 0.3);
}
.block [data-state="2"]:not([readonly]) + div {
  background-color: #772e1f;
  border-color: 0.2rem solid rgba(51, 51, 51, 0.3);
}

.grid {
  margin: auto;
  border: 0.4rem solid #333;
  border-collapse: collapse;
  border-spacing: 0;
  background-color: #fff;
  overflow: hidden;
  font-size: 20px;
  text-align: center;
}
.grid th {
  color: #333;
  pointer-events: none;
}
.grid tbody tr:first-child > td {
  border-top: 0.2rem solid #333;
}
.grid tbody td:last-child {
  border-right: 0.2rem solid #333;
}
.grid tbody tr:last-child > td {
  border-bottom: 0.2rem solid #333;
}
.grid tbody td:first-of-type {
  border-left: 0.2rem solid #333;
}
/* .grid tbody td:nth-child(5n+1):not(:last-child) {
  border-right: 0.2rem solid #333;
}
.grid tbody tr:nth-child(5n):not(:last-child) td,
.grid tbody tr:nth-child(5n):not(:last-child) th {
  border-bottom: 0.2rem solid #333;
}
*/
.grid tbody th {
  padding-right: .5rem;
  padding-left: 2rem;
  text-align: right;
}
.grid tbody th span + span {
  margin-left: .75rem;
}
.grid tbody tr:nth-child(odd) th {
  background-color: rgba(51, 51, 51, 0.1);
}
.grid tbody td:hover {
  position: relative;
}
.grid tbody td:hover:after {
  position: absolute;
  top: -5000px;
  left: 0;
  z-index: -1;
  height: 10000px;
  width: 100%;
  background-color: #ffff8d;
  content: '';
}
.grid tbody tr:hover {
  background-color: #ffff8d;
}
.grid thead td {
  pointer-events: none;
}
.grid thead th {
  padding-top: 2rem;
  padding-bottom: .5rem;
  vertical-align: bottom;
}
.grid thead th:nth-child(even) {
  background-color: rgba(51, 51, 51, 0.1);
}
.grid thead th:nth-child(5n+1):not(:first-child):not(:last-child) {
  border-right: 0.2rem solid #333;
}
.grid thead span {
  display: block;
  text-align: center;
}
.grid thead span + span {
  margin-top: .75rem;
}

.info {
  position: absolute;
  top: 0;
  right: 0;
  padding: .5rem;
}