/* EnjeuxWordle — moteur « Mot du jour » maison (W1). Variables surchargeables par la charte. */
.wd {
  --wd-cols: 5;
  --wd-bien: #43a047;
  --wd-place: #d8a600;
  --wd-absent: #7a8088;
  --wd-cell: #ffffff;
  --wd-bord: #cfd8dc;
  --wd-bord-actif: #3fa9c9;
  --wd-encre: #10161c;
  --wd-key: #e6ebef;
  --wd-key-encre: #10161c;
  --wd-radius: 8px;
  font-family: "Hanken Grotesk", system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
  color: var(--wd-encre);
  outline: none;
  max-width: 520px;
  margin: 0 auto;
  padding: 8px 4px 12px;
  box-sizing: border-box;
  user-select: none;
  -webkit-user-select: none;
}
.wd:focus-visible { box-shadow: 0 0 0 3px rgba(63,169,201,.35); border-radius: 12px; }
.wd-live { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

.wd-board {
  display: grid;
  grid-template-rows: repeat(6, 1fr);
  gap: 6px;
  /* --wd-tile posé par le JS (borne hauteur : plateau + clavier visibles sans défiler). */
  width: min(100%, calc(var(--wd-cols) * var(--wd-tile, 62px) + (var(--wd-cols) - 1) * 6px));
  margin: 0 auto;
}
.wd-row { display: grid; grid-template-columns: repeat(var(--wd-cols), 1fr); gap: 6px; }
.wd-cell {
  aspect-ratio: 1 / 1;
  border: 2px solid var(--wd-bord);
  border-radius: var(--wd-radius);
  background: var(--wd-cell);
  display: flex; align-items: center; justify-content: center;
  font-size: clamp(20px, 6vw, 30px);
  font-weight: 800;
  text-transform: uppercase;
  transition: border-color .12s, transform .12s;
}
.wd-cell.wd-active { border-color: color-mix(in srgb, var(--wd-bord-actif) 55%, var(--wd-bord)); }
.wd-cell.wd-active:first-child, .wd-cell.wd-typed + .wd-active { border-color: var(--wd-bord-actif); }
.wd-cell.wd-typed { border-color: var(--wd-bord-actif); transform: scale(1.04); }
.wd-cell.wd-filled { color: #fff; border-color: transparent; }
.wd-cell.wd-bien { background: var(--wd-bien); }
.wd-cell.wd-place { background: var(--wd-place); }
.wd-cell.wd-absent { background: var(--wd-absent); }

@keyframes wd-flip {
  0% { transform: rotateX(0); background: var(--wd-cell); color: var(--wd-encre); border-color: var(--wd-bord); }
  49% { transform: rotateX(90deg); background: var(--wd-cell); color: var(--wd-encre); border-color: var(--wd-bord); }
  51% { transform: rotateX(90deg); }
  100% { transform: rotateX(0); }
}
.wd-cell.wd-flip { animation: wd-flip .5s ease both; }
@keyframes wd-shake {
  10%, 90% { transform: translateX(-2px); } 20%, 80% { transform: translateX(3px); }
  30%, 50%, 70% { transform: translateX(-5px); } 40%, 60% { transform: translateX(5px); }
}
.wd-cell.wd-shake { animation: wd-shake .45s ease both; }
@media (prefers-reduced-motion: reduce) { .wd-cell.wd-flip, .wd-cell.wd-shake { animation: none; } }

.wd-msg {
  margin: 10px auto 0; text-align: center; font-weight: 700; font-size: 14px;
  padding: 7px 12px; border-radius: 100px; max-width: 420px;
}
.wd-msg-ok { background: #e8f6ee; color: #1e6b43; }
.wd-msg-err { background: #fdecea; color: #7a1f1f; }

.wd-kb { margin-top: 14px; display: flex; flex-direction: column; gap: 6px; }
.wd-kb-row { display: flex; justify-content: center; gap: 5px; }
.wd-key {
  flex: 1 1 0; max-width: 46px; height: 50px; min-width: 0;
  border: 0; border-radius: 8px; background: var(--wd-key); color: var(--wd-key-encre);
  font-weight: 700; font-size: 15px; line-height: 1; font-family: inherit; cursor: pointer;
  transition: background .12s, color .12s;
  touch-action: manipulation;
}
.wd-key:active { filter: brightness(.92); }
.wd-key.wd-bien { background: var(--wd-bien); color: #fff; }
.wd-key.wd-place { background: var(--wd-place); color: #fff; }
.wd-key.wd-absent { background: var(--wd-absent); color: #fff; }
.wd-key-fn { max-width: 78px; flex: 1.6 1 0; font-size: 13px; background: #fff; border: 1.5px solid #cfd8dc; }
.wd-key-enter { flex: 2 1 0; max-width: 104px; }
.wd-busy .wd-key { opacity: .7; pointer-events: none; }
.wd-fini .wd-kb { opacity: .55; pointer-events: none; }

@media (max-width: 420px) {
  .wd-key { height: 46px; font-size: 14px; }
  .wd-kb-row { gap: 4px; }
}
