/* styles/views/reveal.css — extrait de styles.css L542-L580. Reveal overlay base. */

/* ================================== REVEAL OVERLAY ================ */
.reveal-overlay{
  position:fixed;inset:0;z-index:500;
  display:flex;align-items:center;justify-content:center;
  padding:24px;pointer-events:none;opacity:0;
  background:transparent;
  transition:opacity .18s ease, background .25s ease;
}
.reveal-overlay[hidden]{ display:none !important; }

/* --------------------- Invalid : chain shake + toast ------------- */
.board.shake{
  animation:chain-shake .45s cubic-bezier(.36,.07,.19,.97) both;
}
@keyframes chain-shake{
  0%, 100% { transform:translateX(0); }
  15%      { transform:translateX(-10px); }
  30%      { transform:translateX(10px); }
  45%      { transform:translateX(-7px); }
  60%      { transform:translateX(7px); }
  75%      { transform:translateX(-4px); }
  90%      { transform:translateX(4px); }
}

.toast{
  position:fixed;bottom:36px;left:50%;
  transform:translateX(-50%) translateY(120%);
  z-index:600;
  background:var(--panel);
  color:var(--fg);
  padding:14px 24px;border-radius:12px;
  font-family:var(--mono);font-size:11px;letter-spacing:.22em;
  text-transform:uppercase;
  border:1px solid var(--ko);
  box-shadow:0 20px 60px rgba(0,0,0,.5), 0 0 40px -10px var(--ko);
  max-width:min(620px, 92vw);text-align:center;
  opacity:0;transition:transform .28s ease, opacity .22s ease;
  pointer-events:none;
