/* Encaixa Azulejos — só o que o tema partilhado (/assets/base.css) não traz. */
#stage canvas { touch-action: none; }
.stage-overlay .row { justify-content: center; margin-top: 14px; }
.side .stats { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.side .btn + .btn { margin-top: 8px; }
#undo { margin-top: 12px; }
#undo:disabled { opacity: 0.45; }

/* O recadinho do Ministério da Descarga */
.recado {
  margin: 12px 0 0;
  min-height: 2.6em;
  font-size: var(--fs-sm);
  font-weight: 600;
  color: var(--ink-2);
}

/* Pontos a voar por cima do palco */
.fx { position: absolute; inset: 0; z-index: 1; overflow: hidden; pointer-events: none; }
.fx .pop {
  position: absolute;
  transform: translate(-50%, -50%);
  font: 700 clamp(15px, 2.6vmin, 21px)/1 var(--display);
  color: var(--mint-edge);
  text-shadow: 0 2px 0 #fff, 0 0 10px #fff;
  white-space: nowrap;
  animation: sobe 1s ease-out forwards;
}
.fx .pop.grande { font-size: clamp(19px, 3.4vmin, 27px); color: var(--blue-edge); }
.fx .pop.combo { color: var(--pink-edge); }
@keyframes sobe {
  0% { opacity: 0; transform: translate(-50%, -20%) scale(0.7); }
  22% { opacity: 1; transform: translate(-50%, -60%) scale(1.08); }
  100% { opacity: 0; transform: translate(-50%, -190%) scale(1); }
}
@media (prefers-reduced-motion: reduce) {
  .fx .pop { animation: none; opacity: 0; }
}

/* Telemóvel de pé: o painel encolhe para a parede ficar com o ecrã todo */
@media (orientation: portrait) and (max-width: 900px) {
  .game-page .side { max-height: 40dvh; }
  .recado { min-height: 0; margin-top: 8px; }
}
@media (max-height: 540px) and (orientation: landscape) {
  .recado { min-height: 0; margin-top: 8px; font-size: var(--fs-2xs); }
  #undo { margin-top: 8px; }
}
