body {
  margin: 0;
  padding: 0;
  background-color: white;
  font-family: Times, "Times New Roman", Georgia, serif;
}

form {
  display: flex;
  padding: 1rem;
  min-height: calc(100vh - 2rem);
  flex-flow: column;
  justify-content: space-between;
}

h1 {
  margin: 0;
  letter-spacing: 0.2em;
}

h1.large.width {
  display: inherit;
  padding-top: 1rem;
}

h1.small.width {
  display: none;
}

h1 table {
  margin: auto;
  line-height: 0.8;
}

h1 td {
  width: 0.7em;
  text-align: center;
}

h1,
h2 {
  font-variant-caps: petite-caps;
  text-align: center;
}

.grille-et-definitions {
  display: flex;
  flex-flow: row;
  justify-content: space-evenly;
  flex-wrap: wrap;
  height: max-content;
  gap: 1em;
}

.grille {
  display: flex;
}

.grille table {
  border-collapse: collapse;
  margin: auto;
  height: fit-content;
}

.grille th,
.grille td {
  width: 2rem;
  height: 2rem;
  text-align: center;
  vertical-align: middle;
}

.grille td {
  width: 2rem;
  height: 2rem;
  border: 1px solid black;
  padding: 2px;
  background-color: white;
}

.grille tr:nth-of-type(2) td {
  border-top-width: 3px;
}
.grille tr:last-of-type td {
  border-bottom-width: 3px;
}
.grille td:first-of-type {
  border-left-width: 3px;
}
.grille td:last-child {
  border-right-width: 3px;
}

.grille .case.noire {
  background-color: black;
}

.grille input {
  width: 100%;
  height: 100%;
  border: none;
  padding: 0;
  text-align: center;
  font-size: 1.2em;
  font-family: "Comic Sans MS", "Comic Sans", sans;
  color: darkblue;
  background-color: white;
}

.grille input[disabled] {
  background-color: black;
}

.grille input::placeholder {
  color: transparent;
}

.definitions {
  width: 30%;
}

.definitions.horizontales {
  order: -1;
}

.definitions ol {
  padding-left: 2em;
}

.definitions > div > ol > li::marker {
  font-weight: bold;
}

.definitions li ol {
  padding-left: 0em;
  list-style: parenthese;
}

@counter-style parenthese {
  system: extends decimal;
  suffix: ") ";
}

.definitions li li {
  margin-left: 0.8em;
  counter-increment: count;
}

.definitions li li::marker {
  font-size: small;
}

.definitions em {
  text-wrap: nowrap;
}

.definitions.case ol.horizontales {
  list-style-type: "→ ";
}

.definitions.case ol.verticales {
  list-style-type: "↓ ";
}

.definitions li {
  transition: opacity 0.3s;
}

.definitions li.non-selectionee {
  opacity: 30%;
}

.erreur {
  text-align: center;
}

.nouvelle-grille img {
  margin: 0 0.5em;
}

.nouvelle-grille {
  margin: 1em auto 0 auto;
  display: flex;
  align-items: baseline;
}

.nouvelle-grille button,
.nouvelle-grille input {
  border: none;
  background: none;
  color: inherit;
  font-family: inherit;
  font-size: 1em;
  cursor: pointer;
}

.nouvelle-grille button {
  text-decoration: underline;
}

.nouvelle-grille button:hover {
  color: #2a6496;
}

.nouvelle-grille button:active {
  color: darkorchid;
}

.nouvelle-grille input { 
  -moz-appearance: textfield;
  appearance: textfield;
  margin: 0;
  padding: 0;
  text-align: center;
  text-decoration: underline dotted; 
  width: 1em;
}

.nouvelle-grille input::-webkit-inner-spin-button,
.nouvelle-grille input::-webkit-outer-spin-button { 
  -webkit-appearance: none; 
  margin: 0; 
}

@media (max-width: 1024px) {
  h1.large.width {
    display: none;
  }

  h1.small.width {
    display: initial;
  }

  h1 table {
    line-height: 0.7;
  }

  .grille {
    width: 100%;
    margin: auto;
  }

  .definitions {
    width: 45%;
  }

  .definitions.horizontales {
    order: inherit;
  }
}

@media (max-width: 640px) {
  * {
    box-sizing: border-box;
  }

  body {
    width: auto;
    margin: 0;
    padding: 1rem 0;
  }

  h1.large.width {
    display: none;
  }

  h1.small.width {
    display: none;
  }

  .grille td {
    width: 2.5rem;
    height: 2.5rem;
  }
  
  h2 {
    font-size: 1.2em;
    margin: 1em 0 0.5em 0;
  }

  .definitions.horizontales,
  .definitions.verticales {
    width: 100%;
  }
  
  .definitions > ol {
    margin: 0;
  }
  
  .definitions li.non-selectionee {
    visibility: hidden;
    height: 0;
    margin: 0;
    padding: 0;
  }
}

@media (max-device-width: 768px) and (orientation: landscape) {
  html {
    -webkit-text-size-adjust: 100%;
    -ms-text-size-adjust: 100%;
  }
}

@media (prefers-color-scheme: dark) {
  body,
  button {
    background-color: #02081a;
    color: #c6c6c6;
  }

  .grille td,
  .grille input {
    background-color: #edeeee;
  }

  .nouvelle-grille button:hover {
    color: #479fec;
  }

  .nouvelle-grille button:active {
    color: orchid;
  }
}