/* Stepper persistente e integrado do Quebra-Cabeça Numérico.

   Mesma aparência do stepper de estimation.css (CONVENCOES_UI.md, "Controles
   numéricos"), mas em arquivo e classes próprios — não compartilha código com
   a Estimativa de propósito, pra não mexer numa atividade que já está OK no
   painel de testes manuais. Duas diferenças reais: sem unidade (o
   Quebra-Cabeça não tem esse campo no JSON) e com estados de correção no
   próprio stepper (a Estimativa usa só a caixa de feedback pra indicar
   acerto; aqui o campo também muda de cor). */
.atividade-number-puzzle .puzzle-stepper {
  display: grid;
  grid-template-columns: 3.25rem minmax(0, 1fr) 3.25rem;
  min-height: 3.5rem;
  overflow: hidden;
  border: 2px solid #6366f1;
  border-radius: .875rem;
  background: #f1f5f9;
  transition: border-color .2s, box-shadow .2s, opacity .2s;
}

.dark .atividade-number-puzzle .puzzle-stepper { background: #1e293b; }
.atividade-number-puzzle .puzzle-stepper:focus-within {
  border-color: #818cf8;
  box-shadow: 0 0 0 3px rgba(99, 102, 241, .2);
}

.atividade-number-puzzle :is(.puzzle-decrementar, .puzzle-incrementar) {
  display: grid;
  place-items: center;
  background: rgba(99, 102, 241, .12);
  color: #4338ca;
  font-size: 1.5rem;
  font-weight: 700;
  transition: background-color .2s, color .2s;
}
.dark .atividade-number-puzzle :is(.puzzle-decrementar, .puzzle-incrementar) { color: #c7d2fe; }
.atividade-number-puzzle :is(.puzzle-decrementar, .puzzle-incrementar):hover:not(:disabled) { background: rgba(99, 102, 241, .25); }
.atividade-number-puzzle :is(.puzzle-decrementar, .puzzle-incrementar):focus-visible { outline: 3px solid #818cf8; outline-offset: -3px; }
.atividade-number-puzzle :is(.puzzle-decrementar, .puzzle-incrementar):disabled { opacity: .4; cursor: not-allowed; }

.atividade-number-puzzle .puzzle-valor {
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 0;
  padding: .5rem .75rem;
  border-inline: 1px solid rgba(99, 102, 241, .3);
}

.atividade-number-puzzle .puzzle-input {
  width: 6ch;
  max-width: 100%;
  min-width: 0;
  appearance: textfield;
  border: 0;
  outline: 0;
  background: transparent;
  color: #4f46e5;
  font-size: 1.25rem;
  font-weight: 700;
  line-height: 1.5;
  text-align: center;
}
.dark .atividade-number-puzzle .puzzle-input { color: #c7d2fe; }
.atividade-number-puzzle .puzzle-input::-webkit-inner-spin-button,
.atividade-number-puzzle .puzzle-input::-webkit-outer-spin-button { appearance: none; margin: 0; }
.atividade-number-puzzle .puzzle-input:disabled { cursor: not-allowed; }

/* Estados de correção: o próprio stepper muda de cor, porque aqui a
   resposta é exata (não uma margem) e o campo é o lugar natural do acerto. */
.atividade-number-puzzle .puzzle-stepper[data-estado="correta"] {
  border-color: #16a34a;
  opacity: 1;
}
.atividade-number-puzzle .puzzle-stepper[data-estado="correta"] .puzzle-input { color: #15803d; }
.dark .atividade-number-puzzle .puzzle-stepper[data-estado="correta"] .puzzle-input { color: #86efac; }

.atividade-number-puzzle .puzzle-stepper[data-estado="errada"] {
  border-color: #dc2626;
  opacity: 1;
}
.atividade-number-puzzle .puzzle-stepper[data-estado="errada"] .puzzle-input { color: #b91c1c; }
.dark .atividade-number-puzzle .puzzle-stepper[data-estado="errada"] .puzzle-input { color: #fca5a5; }

@media (max-width: 420px) {
  .atividade-number-puzzle .puzzle-stepper { grid-template-columns: 3rem minmax(0, 1fr) 3rem; }
  .atividade-number-puzzle .puzzle-valor { padding-inline: .5rem; }
  .atividade-number-puzzle .puzzle-input { width: 5ch; }
}
