* { font-family: sans; } h1 { text-align: center; } div { display: flex; column-gap: 0.5em; row-gap: 0.5em; margin: 1em auto; justify-content: center; text-align: center; } #grid { border-spacing: 0; border-radius: 6px; } td { padding: 0; } #grid tr:first-child td:first-child { border-top-left-radius: 6px; } #grid tr:first-child td { border-top: 2px solid black; } #grid tr:first-child td:last-child { border-top-right-radius: 6px; } #grid tr td:first-child { border-left: 2px solid black; } #grid tr td:last-child { border-right: 2px solid black; } #grid tr:last-child td:first-child { border-bottom-left-radius: 6px; } #grid tr:last-child td { border-bottom: 2px solid black; } #grid tr:last-child td:last-child { border-bottom-right-radius: 6px; } .regionTop { border-top: 1px solid black; } .regionMiddle { border-top: 1px solid grey; border-bottom: 1px solid grey; } .regionBottom { border-bottom: 1px solid black; } .regionLeft { border-left: 1px solid black; } .regionCenter { border-left: 1px solid grey; border-right: 1px solid grey; } .regionRight { border-right: 1px solid black; } input { width: 1.6em; height: 1.6em; font-size: 1.5em; border: 0; padding: 0; text-align: center; transition: 0.3s; } input:read-write { color: darkblue; background: white; } input:read-only { color: black; background: #6666ff; font-weight: bold; } input.same-value:read-write { color: #009973; background: #66ffd9; } input.forbidden-value:read-write { background: #ccffe6; } input.same-value:read-only { color: #00664d; background: #00e6ac; } input::placeholder { color: #888; } #buttons { column-gap: 0.2em; margin: 0; } a { text-decoration: none; }