.cw-widget {
  --cell: 30px;
  --gap: 2px;
  --bd: 1px;
  --font: 14px;
  --ink: #111;
  --block: #151012;
  --hl: #fff4b8;
  --ok: #c8ffd0;
  --bad: #ffd0d0;

  color: var(--ink);
  font-family: system-ui, Arial, sans-serif;
}

.cw-widget .cw-wrap {
  display: grid;
  gap: 12px;
  align-items: start;
  grid-template-columns: max-content 1fr;
}

@media (max-width: 780px) {
  .cw-widget .cw-wrap {
    grid-template-columns: 1fr;
  }
}

.cw-widget .grid {
  display: grid;
  gap: var(--gap);
  grid-auto-rows: var(--cell);
  user-select: none;
}

/* Black squares */
.cw-widget .block {
  width: var(--cell);
  height: var(--cell);
  background: var(--block);
  border: var(--bd) solid var(--block);
}

/* Letter cells */
.cw-widget .cell {
  width: var(--cell);
  height: var(--cell);
  border: var(--bd) solid #333;
  background: #ffff;
  display: grid;
  place-items: center;
}

.cw-widget .cell input {
  width: 100%;
  height: 100%;
  border: 0;
  outline: 0;
  background: transparent;
  text-align: center;
  font-size: var(--font);
  text-transform: uppercase;
}

/* States */
.cw-widget .cell.hl {
  background: var(--hl);
}
.cw-widget .cell.ok {
  background: var(--ok);
}
.cw-widget .cell.bad {
  background: var(--bad);
}

/* PANEL (hints / controls) */
.cw-widget .panel {
  max-width: 420px;
  border: 1px solid #ddd;
  border-radius: 0;
  padding: 10px 12px;
  background: #ffff;
}

.cw-widget .controls {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 8px;
}

.cw-widget button {
  border: 1px solid #333;
  background: transparent;
  border-radius: 0;
  padding: 6px 10px;
  cursor: pointer;
  font: inherit;
  color: inherit;
}

.cw-widget button:active {
  transform: translateY(1px);
}

.cw-widget .dir {
  border: 1px dashed #333;
  background: transparent;
}

/* CLUES */
.cw-widget .clues {
  display: grid;
  gap: 5px;
  font-size: 14px;
}

.cw-widget .clues h3 {
  margin: 6px 0 4px;
  font-size: 14px;
  letter-spacing: 0.02em;
  text-transform: uppercase;
}

.cw-widget .clues ol {
  margin: 0;
  padding-left: 18px;
}

.cw-widget .clues li {
  margin: 3px 0;
}

.cw-widget .clue-btn {
  border: 0;
  background: transparent;
  padding: 0;
  color: #00aa00;
  cursor: pointer;
  text-align: left;
  font: inherit;
}

.cw-widget .clue-btn:hover {
  text-decoration: underline;
}

.cw-widget .hint {
  font-size: 12px;
  opacity: 0.8;
  margin-top: 8px;
}

/* ===== Check feedback animations ===== */
@keyframes flash-green {
  0% {
    background-color: transparent;
  }
  30% {
    background-color: #9dffb0;
  }
  100% {
    background-color: transparent;
  }
}

@keyframes flash-red {
  0% {
    background-color: transparent;
  }
  30% {
    background-color: #ff9d9d;
  }
  100% {
    background-color: transparent;
  }
}

.cw-widget .flash-correct {
  animation: flash-green 0.6s ease;
}

.cw-widget .flash-wrong {
  animation: flash-red 0.6s ease;
}

/* Full-grid solved flash */
@keyframes grid-green-flash {
  0% {
    box-shadow: 0 0 0 0 rgba(0, 0, 0, 0);
  }
  25% {
    box-shadow: 0 0 0 6px rgba(120, 255, 160, 0.55);
  }
  60% {
    box-shadow: 0 0 0 10px rgba(120, 255, 160, 0.25);
  }
  100% {
    box-shadow: 0 0 0 0 rgba(0, 0, 0, 0);
  }
}

.cw-widget .grid.solved-flash {
  animation: grid-green-flash 0.9s ease;
  border-radius: 0;
}

/* Locked correct letters */
.cw-widget input.locked {
  font-weight: 700;
  opacity: 0.95;
}
